Как стать автором
Обновить
19
3
Ariel VA Feinerman @arielf

Researcher, author and translator

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

Графика древности: пятая волна. Аутсайдеры и современность (часть 4/4)

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

В предыдущих частях этого лонгрида мы узнали всё про лидеров пятого поколения игровых консолей и про параллельную реальность 3D-ускорителей на персональных компьютерах. Казалось бы, тема исчерпана. Но не спешите расслабляться. В заключительной, самой объёмной части статьи мы узнаем многое про аутсайдеров поколения, а также о современном наследии, которое оставила после себя пятая волна.
Читать дальше →
Всего голосов 48: ↑47 и ↓1+65
Комментарии4

Графика древности: пятая волна. Nintendo 64 и PC (часть 3/4)

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

В предыдущих двух частях статьи (тут и тут) мы обсудили общие черты пятого поколения игровых консолей и подробно разобрали особенности первой тройки лидеров поколения — 3DO, Sega Saturn и Sony PlayStation.

Однако, всего лишь через три года после начала поколения в новейших графических технологиях домашней 3D-графики случилась новая революция, которая вполне могла потянуть на очередную смену поколений: переход от квадратных пикселей низкого разрешения к мутным пятнам высокой чёткости.

Изменились и лидеры. 3DO и Saturn постепенно ушли со сцены, PlayStation сохранила и укрепила свои позиции, а новыми весомыми игровыми платформами в индустрии стали консоль Nintendo 64 и домашние ПК, оснащённые графическими ускорителями. О них и будет сегодняшний рассказ.
Читать дальше →
Всего голосов 39: ↑38 и ↓1+56
Комментарии15

Путь к мечте: как инвалидность не помешала стать разработчиком и продолжить борьбу за здоровье

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

Меня зовут Станислав Герасимов, 31 год, я разработчик. Хочу рассказать свою жизненную историю и о том, как я, преодолевая трудности и преграды, шел и иду к своим мечтам — стать профессиональным разработчиком, поправить здоровье и найти друзей.

Читать далее
Всего голосов 52: ↑49 и ↓3+55
Комментарии16

Презервация и пиратство: как не потерять медиа

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

Вы когда-нибудь задумывались о том, что однажды не сможете посмотреть любимый фильм, пройти любимую игру, прочитать любимую книгу, послушать любимую музыку? Если вы думаете, что такого не случится, то вы не правы. The Crew, гоночная аркада от Ubisoft, больше недоступна для прохождения. Многие старые мобильные игры канули в Лету. Многие книги больше не переиздаются в бумажном виде. Кино и музыка, которые распространяются через стриминговые площадки, легко могут исчезнуть, если сервис закроется, либо случится что-то непредвиденное. Но всё же — как сохранить любимый контент, чтобы им пользовались ещё долгие годы?
Читать дальше →
Всего голосов 57: ↑55 и ↓2+80
Комментарии72

Призыв писать компактное ПО, версия 2024 года (с примером кода)

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

Этот пост посвящён памяти Никлауса Вирта, первопроходца в сфере вычислительных наук, ушедшего от нас 1 января этого года. В 1995 году он написал важную статью A Plea for Lean Software, и в своём посте я постараюсь воспроизвести её почти тридцать лет спустя, с учётом современных кошмаров разработки ПО.

Очень короткая версия поста: современные способы разработки/сборки ПО смехотворны, они приводят к созданию пакетов на 350 МБ для рисования графиков, а простые продукты импортируют 1600 зависимостей неизвестного происхождения. Уровень безопасности ПО ужасен, ведь он зависит и от качества кода, и от его объёма. Многие из нас понимают, что ситуация нерациональна. К сожалению, многие программисты (и их руководство) никогда не работали как-то иначе. А остальным редко выделяют время, чтобы выполнять работу качественно.

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

Надеюсь, этот пост станет моральной поддержкой для страдающих программистов и технологов, стремящихся улучшить ситуацию. Дело не только в вас, и мы не просто страдаем от ностальгии: ПО сегодня действительно очень странное.

Читать далее
Всего голосов 117: ↑114 и ↓3+144
Комментарии197

Графика древности: палитры, часть 2/2

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

В предыдущей части цикла статей мы рассмотрели историю эволюции палитр в цветной компьютерной графике домашних компьютеров и игровых консолей, а также причины, почему они оказались именно такими и содержали те или иные цвета. Однако тема палитровой графики ещё не исчерпана. Сегодня поговорим про множество других интересных вещей: программируемые палитры и экономию памяти, палитровые анимации и визуальные эффекты, проблемы цветопередачи, обход ограничений на количество цветов, таинственный «артефактинг» и особенности рисования палитровой графики.
Читать дальше →
Всего голосов 105: ↑105 и ↓0+105
Комментарии20

Графика древности: палитры, часть 1/2

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

Хотя пиксельная графика прошлых лет полна нюансов, несомненно, одной из её главнейших характеристик, наряду с разрешением, является палитра — ограниченный набор цветов, которым нарисовано пиксельное изображение. Уникальное сочетание цветов, доступное на отдельно взятом старом компьютере или игровой приставке, часто позволяет даже беглым взглядом отличить графику для одной платформы от другой. Техники работы с палитрами и подбор оттенков также являются визитной карточкой многих пиксельных художников прошлого и современности. Но палитра — это не просто случайный набор цветов. Это результат технических ограничений и инженерных решений, в результате которых родились необычные техники рисования, анимационные спецэффекты, и особая визуальная эстетика.
Читать дальше →
Всего голосов 91: ↑90 и ↓1+126
Комментарии38

В софте все всрато и становится еще всратее

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

Приветствую хабравчане!

Глава 1 - Нытье про то, что раньше было лучше

Десяток лет читаю Хабр, в основном разработка, программирование, старое железо и посты с адовым рейтингом. Видел несколько постов об ожирении сайтов, софта. О разочаровании в программировании с 2000+ постов. И пост, что в софте все ок, но никто не доволен или как оно там. А не важно. Хочу поделиться своими мыслями и наблюдениями на этот счет.

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

Читать далее
Всего голосов 541: ↑457 и ↓84+459
Комментарии1418

Раздувание кода стало астрономическим

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

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

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

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

Специальный инструмент загрузки на сервер, которым я пользуюсь сегодня, суммарно имеет 230 МБ клиентских файлов и задействует 2,7 тысяч файлов для управления этим процессом.
Читать дальше →
Всего голосов 338: ↑324 и ↓14+385
Комментарии864

Моё разочарование в софте

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

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


Я занимаюсь программированием уже 15 лет. Но в последнее время при разработке не принято думать об эффективности, простоте и совершенстве: вплоть до того, что мне становится грустно за свою карьеру и за IT-отрасль в целом.

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

Только в программном обеспечении считается нормальным, если программа работает на уровне 1% или даже 0,01% от возможной производительности. Ни у кого вроде нет возражений.
Всего голосов 505: ↑474 и ↓31+443
Комментарии2474

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

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

Швейцарцы принимают участие в референдуме о введении гарантированного базового дохода. Источник: Ruben Sprich / Reuters

Вот уже несколько лет правительства ряда стран активно обсуждают (и даже реализовывают) идею безусловного базового дохода. Впереди планеты всей — Финляндия, которая приняла решение выплачивать безработным сумму в 560 евро в качестве безусловного базового дохода.

Правда, в эксперименте принимают участие не все финны, находящиеся на учете биржи труда, а лишь две тысячи случайно выбранных граждан в возрасте от 25 до 58 лет. С января 2017 года они получали каждый месяц 560 евро. Сейчас Финляндия подвела результаты этого эксперимента.
Читать дальше →
Всего голосов 74: ↑72 и ↓2+70
Комментарии999

Квантовые новости от IBM: введены в строй два мощных процессора нового типа

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


В марте этого года корпорация IBM объявила о запуске нового проекта, который называется IBM Q. В его рамках ведется работа над чипами нового поколения — квантовыми процессорами. Инициатива IBM Q оказалась вполне успешной, ведь прошло всего около двух месяцев, а сотрудники корпорации уже создали два мощных процессора. Первые квантовые разработки компании были открыты для пользователей около года назад. Квантовые процессоры все это время служили благой цели — научным исследованиям. В настоящий момент пользователи провели уже около 300 000 квантовых экспериментов на базе указанных чипов, связанных с платформой IBM Cloud.

Сейчас к прежним наработкам компании добавлены еще два процессора. Первый — 16-кубитный процессор, который предназначен для работы в научной сфере. Он доступен для разработчиков, программистов и исследователей в области квантовых алгоритмов. 16-кубитный процессор позволяет проводить более сложные эксперименты чем прежний, 5-кубитный, являвшийся частью платформы IBM Quantum Experience. Бета-доступ к новинке можно получить по запросу в IBM Q experience. А новый Software Development Kit доступен на GitHub.
Всего голосов 23: ↑23 и ↓0+23
Комментарии80

4D-печать: новые материалы, меняющие характеристики и форму

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

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

Технологии 4D-принтера трудно назвать революционными по сравнению с обычной 3D-печатью — объект точно так же создаётся слой за слоем. Самое интересное происходит потом, когда готовый предмет начинает меняться. И здесь всё зависит от того, какой материал используется в принтере. Специальные материалы изменяются под воздействием воды, тепла, света, механического воздействия, а также могут быть запрограммированы на определенные действия.

Давайте посмотрим, зачем нужна 4D-печать и как выглядит мир, построенный на основе вещей, изменяющих свою форму и поведение.
Всего голосов 25: ↑20 и ↓5+15
Комментарии15

Секретные цвета Commodore 64

Время на прочтение7 мин
Количество просмотров18K
COMMODORE FORMAT выпуск 13, Q&A:

Невозможно увеличить количество цветов в палитре C64, но существуют хитрые подпрограммы, которые позволяют создать впечатление большего количества цветов. Dragon Breed от Activision использует очень быстрое переключение цветов, чтобы дать промежуточный тон, а PD-кодеры создали механизм Fli-Pic, который позволяет вам использовать более четырех цветов на блок символов.

Всего голосов 69: ↑68 и ↓1+67
Комментарии27

Алгоритм «diamond-square» для построения фрактальных ландшафтов

Время на прочтение12 мин
Количество просмотров118K
Карта игры Minecraft, созданная с помощью приложения CartographДумаю, многие знакомы с весьма необычной игрой Minecraft (справа — пример сгенерированной в ней карты), в которой игрок находится на (практически) бесконечной поверхности Земли и может исследовать окружающий мир с минимальными ограничениями.

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

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

Читать дальше →
Всего голосов 148: ↑147 и ↓1+146
Комментарии58

Методы модификации машинного кода: «селекция» vs. «генная инженерия»

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


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

«Мутации» машинного кода


В качестве примера возьмём приставку NES (известную у нас как Dendy), в которой используется процессор 6502. Система команд у него очень проста — опкод представлен всегда одним байтом, и каждый из 256 хоть что-то, да делает. Никаких «защит» от дурака не предусмотрено, и почти любой случайный набор байт будет выполняться без сопротивления со стороны процессора. Таким образом, мы можем взять ROM какой-нибудь игры, исправить в нём случайные биты (будем называть это «мутациями») — и после запуска наблюдать забавные глюки в разных неожиданных местах, но при этом в целом игра скорее всего будет работоспособной. Похоже, что на YouTube имеется целый жанр подобного видео. Полученный таким образом машинный код наверняка не очень корректен, но в большинстве случаев процессор сможет его выполнить и что-то сделать.

Как оказалось, такую методику используют не только для веселья (а играть в знакомые игры с неожиданными глюками весьма забавно), но и для полученя вполне себе конкретных модификаций: делают большое количество «мутантов» и ищут тот, в котором проявился нужный эффект. Точь-в-точь как в современных методах селекции, когда зародыши организмов подвергаются воздействию мутагенов (что приводит к случайным изменениям в генетическом коде), а потом из того что смогло вырасти отбираются те, у которых есть нужный признак. Полученные таким образом организмы получают в довесок массу других нежелательных мутаций. Избавляются от них путем постепенного скрещивания c нормальным видом, добиваясь получения более-менее вменяемого организма с нужным признаком и минимумом других мутаций, которые оказались заметны. То же самое можно сделать и с машинным кодом.
Читать дальше →
Всего голосов 25: ↑24 и ↓1+23
Комментарии8

Алан Кэй, создатель ООП, про разработку, Лисп и ООП

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

Если вы никогда не слышали про Алана Кэя, то как минимум слышали его знаменитые цитаты. Например, это высказывание 1971 года:
The best way to predict the future is to invent it.
Лучший способ предсказать будущее это изобрести его.


У Алана очень яркая карьера в информатике. Он получил Премию Киото и Премию Тьюринга за работу над парадигмой объектно-ориентированного программирования. Он был одним из первопроходцев в области персональных компьютеров и графического интерфейса, он разработал Smalltalk — один из первых самых влиятельных языков программирования всех времен.

У нас в Хекслете, особенно в чате, постоянно поднимается вопрос «что такое ООП» и «что имел ввиду Алан Кэй на самом деле». В этой заметке собраны интересные цитаты Алана о состоянии современной разработки, ООП и языке Лисп.
Читать дальше →
Всего голосов 42: ↑37 и ↓5+32
Комментарии139

Письмо Дейкстры: почему обучение программированию нужно начинать с функционального языка

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


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

Мы в Хекслете недавно запустили новую версию, ключевой особенностью которой стали практические упражнения по программированию в браузере. В связи с этим мы стали получать еще больше писем от начинающих программистов с вопросами вроде «с чего начать». С одной стороны, они хотят выложить бета-версию приложения в app store через неделю. С другой стороны, мы понимаем, что за такой короткий срок, наверное, можно научиться кодить приложения, но нельзя научиться программировать. И сложно решить, что лучше: как можно быстрее научить созданию простых приложений без реального понимания программирования, алгоритмов и их вычислительной сложности, а потом начать знакомство с этими важными темами, или начать «с начала», и органично придти к созданию приложений и продуктов после освоения фундамента.

В 2001 году, Эдсгер Дейкстра написал письмо экономическому совету университета Техаса. В нем знаменитый ученый призывает членов совета задуматься о смене языка программирования для вводного курса. К сожалению, язык был заменен на Java. Примерно в то же время MIT сменили язык курса «Структура и интерпретация компьютерных программ» с функционального Scheme (диалекта LISP) на Python.

Сегодня мы публикуем перевод этого письма.

Членам Экономического Совета


Я пишу вам по поводу слуха о замене языка во вводном курсе по программированию с функционального языка Haskell на императивный язык Java. Я считаю, что Совет должен взять на себя ответственность, чтобы решение не было принято на неправильном уровне.
Читать дальше →
Всего голосов 65: ↑61 и ↓4+57
Комментарии309

[Письмо молодым] Мечтайте. Мечты сбываются. И я не знаю почему

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


В детстве я мечтал о том, что стану богатым и буду путешествовать по уютным городам Европы. Но, находясь в центре Барселоны я не ощущал особенности момента. Все произошло последовательно и даже логично. Мой путь, который начался в небольшой деревне, продолжился в столице неожиданным для многих образом. А все потому, что я не боялся мечтать.
Читать дальше →
Всего голосов 74: ↑45 и ↓29+16
Комментарии150

C/C++: как измерять процессорное время

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

image
КДПВ


От переводчика:
Большинство моих знакомых для измерения времени в разного вида бенчмарках в С++ используют chrono или, в особо запущенных случаях, ctime. Но для бенчмаркинга гораздо полезнее замерять процессорное время. Недавно я наткнулся на статью о кроссплатформенном замере процессорного времени и решил поделиться ею тут, возможно несколько увеличив качество местных бенчмарков.


P.S. Когда в статье написано "сегодня" или "сейчас", имеется ввиду "на момент выхода статьи", то есть, если я не ошибаюсь, март 2012. Ни я, ни автор не гарантируем, что это до сих пор так.
P.P.S. На момент публикации оригинал недоступен, но хранится в кэше Яндекса


Функции API, позволяющие получить процессорное время, использованное процессом, отличаются в разных операционных системах: Windows, Linux, OSX, BSD, Solaris, а также прочих UNIX-подобных ОС. Эта статья предоставляет кросс-платформенную функцию, получающую процессорное время процесса и объясняет, какие функции поддерживает каждая ОС.

Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии69

Информация

В рейтинге
1 197-й
Зарегистрирован
Активность