Pull to refresh
57
0.9
Ariel VA Feinerman @arielf

Researcher, author and translator

Send message

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

Level of difficulty Easy
Reading time 26 min
Views 8.4K

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

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

Level of difficulty Easy
Reading time 21 min
Views 14K

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

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

Reading time 5 min
Views 174K

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

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

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

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

Читать далее
Total votes 630: ↑546 and ↓84 +462
Comments 1418

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

Reading time 5 min
Views 97K

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

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

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

Специальный инструмент загрузки на сервер, которым я пользуюсь сегодня, суммарно имеет 230 МБ клиентских файлов и задействует 2,7 тысяч файлов для управления этим процессом.
Читать дальше →
Total votes 413: ↑399 and ↓14 +385
Comments 859

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

Reading time 11 min
Views 388K

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


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

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

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

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

Reading time 3 min
Views 67K

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

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

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

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

Reading time 3 min
Views 18K


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

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

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

Reading time 5 min
Views 32K

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

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

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

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

Reading time 7 min
Views 17K
COMMODORE FORMAT выпуск 13, Q&A:

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

Total votes 69: ↑68 and ↓1 +67
Comments 27

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

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

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

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

Читать дальше →
Total votes 147: ↑146 and ↓1 +145
Comments 58

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

Reading time 7 min
Views 15K


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

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


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

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

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

Reading time 5 min
Views 60K
image

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


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

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

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

Reading time 4 min
Views 102K


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

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

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

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

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


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

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

Reading time 3 min
Views 137K


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

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

Reading time 10 min
Views 79K

image
КДПВ


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


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


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

Читать дальше →
Total votes 32: ↑29 and ↓3 +26
Comments 69

Обходим антивирус при помощи десяти строк кода

Reading time 2 min
Views 65K
Специалист по информационной безопасности под ником evasiv3 опубликовал на прошлой неделе запись в своем блоге, в которой рассказывается о том, как можно обойти любой антивирус при помощи десяти строк кода.

Изначально Evasiv3 планировал написать огромный пост о способах обхода антивирусной защиты, однако, протестировав первый шаг своего «руководства» он был очень удивлен: ни один из 56 протестированных продуктов, призванных обеспечить безопасность пользователя в сети, не обнаружил его бинарник.

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

Читать дальше →
Total votes 72: ↑43 and ↓29 +14
Comments 44

Почему я пишу свои алгоритмы в 95% случаев, и буду и дальше разрабатывать кодовые велосипеды

Reading time 3 min
Views 42K
Это ответ на публикацию «А нужно ли знать программисту алгоритмы?».

Так почему я пишу свои алгоритмы в 95% случаев и буду их и дальше писать?

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

Я разработчик экспериментальной системы управления крылатым беспилотником.
Читать дальше →
Total votes 97: ↑73 and ↓24 +49
Comments 77

Все ядерные взрывы на одной карте

Reading time 2 min
Views 79K
image

Американская компания Esri разработала интерактивную карту, которая показывает все 2624 успешных ядерных взрывов, начиная с 1945 года, сообщает independent.

Первым успешным ядерным взрывом в истории было испытание «Тринити», проведенное армией США в июле 1945 года.
Энергия взрыва той бомбы была эквивалентна приблизительно 21 килотонне тротила. Один из руководителей проекта, Роберт Оппенгеймер, американский физик-теоретик, сказал: «Мы знали, что мир не будет прежним. Кто-то смеялся, кто-то плакал, но большинство людей молчали, и я вспомнил строку из индуистского священного писания: „Я стал Смертью, уничтожителем Миров“».
Читать дальше →
Total votes 29: ↑22 and ↓7 +15
Comments 86

Японские учёные нашли микроорганизм, способный разлагать пластик

Reading time 2 min
Views 26K
image

Учёные Киотского технологического университета обнаружили бактерий, способных разлагать популярный ПЭТ-пластик. Бактерии были обнаружены при анализе пластика, собранного в почве и в сточных водах. Открытие и изучение микроорганизмов, названных учёными Ideonella sakaiensis, может помочь справиться со всё возрастающим количеством пластикового мусора.

С момента изобретения пластика в 1940-х годах он набрал огромную популярность. По всему миру производится порядка 311 миллионов тонн пластика ежегодно, и лишь 14% от произведённых товаров (большую часть которых составляют пластиковые бутылки) собирается для повторного использования. А собранные бутылки всё равно в большинстве своём плавятся для изготовления других предметов. Новые бутылки обычно производятся из нефтепродуктов.

ПЭТ-пластик, или полиэтилентерефталат, очень медленно разлагается, и загрязнение окружающей среды пластиковыми отходами стало уже приобретать угрожающие размеры. Множество микроскопических кусочков собирается в океане, и они уже включились в пищевую цепочку морских обитателей. А ведь в конце этой цепочки часто оказываются сами люди.
Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Comments 123

На уникальной окаменелости возрастом 0,5 млрд лет видна даже нервная система животного

Reading time 2 min
Views 14K


Наша планета частенько преподносит ученым сюрпризы. Палеонтологи вообще больше похожи на кладоискателей, и несмотря на то, что поиски давно вымерших животных ведутся строго по науке, некоторые находки подобны сокровищам. Именно это можно сказать об окаменелости, найденной совсем недавно в Китае. Возраст ее — 520 миллионов лет, а само животное (Chengjiangocaris kunmingensis) является родственником современных ракообразных.

Удивительным является то, что на породе отпечатался не только хитиновый панцирь со всеми деталями, но и нервная система животного. Это почти невероятная удача, и уж точно лучший экземпляр сохранившейся структуры нервной системы вымершего миллионы лет назад животного. Обычно сохраняются только твердые части тела, вроде зубов, костей, хитиновых оболочек. Ткани минерализуются чрезвычайно редко, а «цветная» окаменелость такого типа вообще уникальна. По центру всей окаменелости видна четкая линия фиолетового цвета, это так называемый нервный тяж (древний «спинной мозг»). На линии видны утолщения — это ганглии, располагавшиеся между каждой из пар ног животного.
Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Comments 39

Information

Rating
1,368-th
Registered
Activity