Мнение разработчика о формате PSD

Здесь я хотел бы остановиться на минутку и рассказать о формате Adobe PSD. PSD не является хорошим форматом. PSD даже не является плохим форматом. Назвать его так было бы оскорблением для других плохих форматов, таких как PCX или JPEG. Нет, PSD — чудовищный формат. Несколько недель работы над этим кодом возвели мою ненависть к PSD до уровня яростного огня, пылающего лютой страстью миллиона солнц.

Если есть два способа что-то сделать, PSD использует оба, в разных местах. Вдобавок он создаст ещё три способа, которые бы не пришли в голову любому здравому человеку, и использует их заодно. PSD возводит несогласованность до уровня искусства. Почему, например, он решил, что именно эти блоки должны быть выровнены на четыре байта, и это выравнивание не должно быть включено в размер? Другие блоки в других местах либо не выравниваются, либо включают выравнивание в размер. Тут, впрочем, оно не включено. Любой из этих трёх способов подошёл бы. Разумный формат остановился бы на одном. PSD, конечно же, использует все три, и другие. Читать

Чужой код

Меня недавно спросили, почему программисты ненавидят работать с чужим кодом. Долго думал, как донести до обычного пользователя всю суть пиздеца. Решил привести небольшую аналогию:

Вот представь, что тебе доверили достроить за другим прорабом лабораторию на острове. Ты приходишь на объект, а там кроме недостроенного здания: огромный вентилятор (размером со здание), большой воздушный шар и комната набитая швабрами. Почесав голову, ты разбираешь этот хлам и доделываешь лабораторию. Сдаешь объект ученным, но через 5 минут они выбегают с криком: «УТЕЧКА ЯДОВИТОГО ГАЗА!!!».

— Как так-то, блять! Должно же работать! — в отчаянии кричишь ты и звонишь прошлому прорабу:

— Вася, у нас ядовитый газ потёк! В чем проблема?

— Не знаю, должно было все работать. Что-то в проекте менял?

— Немного, швабры вынес…

— Швабры потолок держали!
Читать

Блокчейн

Отличную статью на тему «как это работает» запостили на хабре. Т.к. частенько статьи оттуда «пропадают», делаю перепост.
Оригинал тут: https://habrahabr.ru/post/340206/

 

Про Blockchain сегодня не пишет только ленивый. Существует огромное количество статей разной степени понятности и полезности. Это очередная из них. Нам захотелось создать максимально простой, но работающий блокчейн и написать кратко, но понятно для неспециалистов, как же эта собака этот блокчейн работает. Так родился проект BaumankaCoin, исходники которого можно загрузить c GitHub-а.

Многие люди представляют себе технологию блокчейн и криптовалют как некий мега rocket science. Безусловно, чтобы понять все тонкости и нюансы – потребуется потратить много времени; но в действительности данная технология, если разобраться, оказывается гораздо более простой для понимания, чем принято считать. Реализовав свой coin мы намеревались помочь людям понять «на пальцах» устройство данных технологий.

Читать

Тем кто хоть одну серьезную программу написал посвящается

Если ты в своей жизни хоть раз писали что-то большее «Hallo world», то вероятно уже знаешь, что не всегда просто предусмотреть все.

Например:

Код языка совпадает с кодом страны.
Не всегда. Код страны в Японии — jp. Код языка — ja.

или вот:

У каждого места есть только один официальный адрес.
Однако, в Женеве есть дамба, одна ее часть находится во Франции, другая — в Швейцарии. И у неё два адреса.

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

На гитхабе появился постоянно обновляемый список подобных «мелочей».

Ниже перевод с сайта tproger.ru

Мифы о географии

  1. У одного места может быть только одно официальное название.
    На самом деле, не всегда. «Женева» на разных языках внутри страны пишется так: Genève, Genf, Ginevra.
  2. Топонимы (названия топографических объектов) подчиняются правилам языка.
    И это не так: согласно правилам немецкого языка последовательность «ue»  равна «ü». Это правило существует, потому что «üe» больше не используется в языке. Однако холм за Цюрихом называется «Üetliberg».
  3. У каждого места есть только один официальный адрес.
    Однако, в Женеве есть дамба, одна ее часть находится во Франции, другая — в Швейцарии. И у неё два адреса.
  4. Вы заблуждаетесь, если думаете, что у каждой страны есть столица.
    Например, Швейцария явно решила выделиться — у неё нет столицы. Правительство находится в Берне, но как таковой столицы у них нет.
  5. Здания не двигаются.
    Однако это не так! Ведь в Цюрихе здание весом в 6200 тонн было сдвинуто на 60 метров.
  6. Код языка совпадает с кодом страны.
    Не всегда. Код страны в Японии — jp. Код языка — ja.
  7. Если вы думали, что нумерация зданий не может начинаться с нуля, то вы ошибались.
    Пример: 0 Egmont Road, Middlesbrough, TS4 2HT

Узнать ещё о нескольких мифах можно здесь и здесь.

Мифы об именах

  1. Имена людей записаны в ASCII.
  2. Имя человека не может быть изменено ни при каких обстоятельствах.
  3. Если вы думали, что имена не могут состоять из цифр, то вы, к сожалению, ошибались. Ведь в Москве 14 лет назад родился мальчик, которого назвали БОЧ рВФ 260602.
  4. Приставки и суффиксы в именах можно спокойно игнорировать.
  5. Имена даются людям при рождении.
  6. Люди не могут иметь двойные имена.

Еще несколько мифов можно посмотреть здесь. Читать

Про скорость света

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

Но я никогда не задумывался, что за один такт 3х гигагерцового процессора, свет в вакууме успевает пройти всего 10 сантиметров!

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

Пруф: https://habrahabr.ru/post/310130/

Прямо праздник какой то

Для вирусописателей, и начинающих программистов, желающих приколоться над знакомым есть отличная новость из Редмонда.

3 дня назад, товарищ @ParvezGHH сообщил о обнаружении в продуктах Microsoft Office серъезной уязвимости, позволяющей выполнить любой код с правами пользователя открывшего специально созданный документ Office.

В качестве примитивной, но действенной защиты в голову приходит только — не открывать файлы офиса с расшаренных ресурсов, а сперва копировать к себе. Не открывать ничего в формате офиса с чужих флешек. Читать

Про безумие

Так или иначе, встречал я в жизни разных людей пробующих, или пробовавших себя в программировании, кому то все дается легко, кому то совсем наоборот. Часто встречаются люди у которых выхывает головную боль попытка осознать, что такое рекурсия, а я ей пользовался еще в 11’ом классе.

Тема статьи которую я прочел сегодня, вызывает у меня недоумение… хотя это мягко сказано. Я вообще не понимаю как это возможно придумать…. Речь о цепных квайнах. Так называются программы, которые при запуске производят исходники других программ, которые при запуске выдают исходники других программ …. и т.д. N раз, а в конце получаешь исходник самой первой программы!!!! Причем:

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

(отсюда)

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

Системные вызовы Linux и Windows

Последние пару недель изучаю ассемблер, по ходу дела возникают разные мысли и вопросы, на которые успешно отвечает гугль. Нагуглил сейчас пост на stackoverflow о системных вызовах в linux и windows: http://stackoverflow.com/questions/2489889/system-calls-in-windows-native-api

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