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

Researcher, author and translator

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 630: ↑546 и ↓84+462
Комментарии1418

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

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

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

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

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

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

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

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

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


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

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

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

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

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

Швейцарцы принимают участие в референдуме о введении гарантированного базового дохода. Источник: 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 мин
Количество просмотров32K

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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

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

Время на прочтение5 мин
Количество просмотров60K
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 мин
Количество просмотров137K


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

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

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

image
КДПВ


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


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


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

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

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

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

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

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

Читать дальше →
Всего голосов 72: ↑43 и ↓29+14
Комментарии44

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

Время на прочтение3 мин
Количество просмотров42K
Это ответ на публикацию «А нужно ли знать программисту алгоритмы?».

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

Информация

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