Няшная / Говнокод #8202 Ссылка на оригинал

0

  1. 1
write_ext = ".pgm\0.ppm\0.ppm\0.pam" + colors*5-5;

из dcraw.c - кладезь вот таких перлов. то ли говнокодер писал - то ли гений. настолько лаконичного кода давно уже не видел.

http://www.cybercom.net/~dcoffin/dcraw/

Запостил: Dummy00001 Dummy00001, (Updated )

Комментарии (23) RSS

  • говно полное. нет чтобы массив сформировать. и main() на почти 400 строк это пиздец со злобной смесью goto и #ifdef.
    Ответить
  • на интересные языки переведено:
    >en Esperanto
    >em Português
    >на русском
    >па-беларуску

    Просто автор индиго. Люди нашего времени его не примут.
    Ответить
    • Да мне вот тоже кажется, что этот типок просто уникальный,
      если там и есть говно - видно писали его с выдумкой и вполне возможно под веществами, а не за еду.
      Ответить
  • В модуле 9200 строк кода. Причем дофига кода, который описывает данные, а не логику.
    Чет типа
    static const uchar xlat[2][256] = {
    { 0xc1,0xbf,0x6d,0x0d,0x59,0xc5,0x13,0x9d, 0x83,0x61,0x6b,0x4f,0xc7,0x7f,0x3d,0x3d,
    0x53,0x59,0xe3,0xc7,0xe9,0x2f,0x95,0xa7, 0x95,0x1f,0xdf,0x7f,0x2b,0x29,0xc7,0x0d,
    0xdf,0x07,0xef,0x71,0x89,0x3d,0x13,0x3d, 0x3b,0x13,0xfb,0x0d,0x89,0xc1,0x65,0x1f,
    0xb3,0x0d,0x6b,0x29,0xe3,0xfb,0xef,0xa3, 0x6b,0x47,0x7f,0x95,0x35,0xa7,0x47,0x4f,
    0xc7,0xf1,0x59,0x95,0x35,0x11,0x29,0x61, 0xf1,0x3d,0xb3,0x2b,0x0d,0x43,0x89,0xc1, ........
    Чувак реально чокнутый

    На главной страничке есть фотка с гугл мапс. Где его запечатлили толкающим коляску с ребенком.
    А он шустрый. Все успел.
    Ответить
      • А ведь спиздить, пожалуй, займет большее количество времени, чем сделать. Все зависит от наличия женщины.
        Оупс..вот где он время сэкономил. Бабу искать не стал. Нашел сразу ребетёнка.
        Ответить
          • Еще раз заглянув в его код, стал сомневаться, что он вообще человек
            Ответить
            • Иван Федорович крузенштерн человек и пароход
              Dave Coffin a man and decoder.
              P.S. Да, коляску как угнал, ручки-держаки низко — сутулится.
              Ответить
  • Может, он методом проб и ошибок писал код? Код поддерживает 500 фотокамер, и наверное не везде спецификации открыты, см.:

    "> Do you have any specifications describing raw photo formats?
    > Yes, but they tend to omit important details, like how to decompress the raw image or decrypt private metadata"

    Я предполагаю, он сам особо не знает, что все эти константы значат. Возможно, он писал код на основе реверс-инжениринга? Я бы тогда тоже замаялся придумывать имена ~9000 константам и прочим моментам поведения.

    Без вникновения в код/ситуацию я бы не судил так с плеча.
    Ответить
    • хотя... на вопрос почему не хочет делать код библиотекой, он пишет:

      >Library code is ugly because it cannot use global variables
      Ответить
  • обьясните мне паскалисту что там за х**ня такая?
    я нихрена не понял что он хотел этим сделать...
    Ответить
    • Видимо, выбрать нужное расширение из набора. Строка на самом деле - указатель на первый символ. К ней прибавляется некоторое число, смещение (арифметика указателей). Нужное расширение - набор символов от полученного указателя до первого нулевого символа. Одновременно хитро и тупо: вполне достаточно было массива расширений.
      Ответить
    • если речь об опубликованном ГК, то получить расширение файла по значению colors.
      т.е. в адекватном случае это должен был быть массив
      Ответить
      • >должен был быть массив
        Однозначно. Веселуха начнется когда нам потребуется записать что-то вроде
        {".bmp", ".jpg", ".jpeg", ".gif"};
        Ответить
        • может быть там расчет на 8.3 имена, а всякие .jpeg, .torrent и .fuckinglongextension просто считаются еретическим отродьем
          Ответить
      • скажем просто, что это гримасы нестрогой типизации
        крестоблядство!
        taras.jpg
        Ответить
    • строковые литералы в С они по типу указатели на (константрый) массив символов.

      указатели в С поддерживают арифметику, например аддрес n-го элемента массива `&a[n]` можно написать так же `a+n`. вот это самое `a+n` и стоит сверху (строковый литерал + целочисленное выражение).

      теперь литерал. С автоматом в конце всех строковых литералов добавляет 0 (nul terminated string). строковый литерал таким образом выглядит как массив состоящий из 4х подстрок длиной 5 символов: ".pgm\0", ".ppm\0", ".ppm\0", ".pam\0". (та цифра "5" ссылается на длину этих подстрок, включая ноль на конце.)

      таким образом, варьируя переменную `colors` от 1 до 4, `write_ext` будет указывать на одну из этих nul-terminated подстрок.

      развернутый код для этого дела аналогичен вот этому:
      const char all_write_ext[4][5] = {  ".pgm", ".ppm", ".ppm", ".pam" };
      write_ext = all_write_ext[colors-1];
      Ответить
      • Мистер Джабез Уилсон громко расхохотался.

        – Вот оно что! – сказал он. – Я сначала подумал, что вы бог знает какими мудреными способами отгадываете, а, оказывается, это так просто.

        – Я думаю, Уотсон, – сказал Холмс, – что совершил ошибку, объяснив, каким образом я пришел к моим выводам. Как вам известно, «Omne ignotum pro magnifico», и моей скромной славе грозит крушение, если я буду так откровенен…
        Ответить
  • ф)H!J.O.V,M!N.A,Q$T(Y?UC,L)E:S(H$D.L.EP?Q:Y,Z(R:G.I:H(O(A H,GO?E)S,D?D:O"VP!J)Q.Y!O.G"B J!V I,C(L(W(N.R!L"P:D)W?F)T!W"Q H"B:B"X!N?M"O"PY?O W?B)D.G)VCE"WI I.J.Z:P"V(Y(A,T Q"S,P?C,C?LN$S:G?X,P,I$W?C$J:U$V V(NL.T!P"N?G.T:C?V,M$F I:Q)BK,K?CB?Z,G.L"EN"N!S:E?L(O$OЗAONDIQTYBYINOECOXZTJMDOPQXTVJKILIKTFKKABVVAJCCVBGPOUFQHVEKNQNBOGBT
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8