1. C# / Говнокод #17105

    +136

    1. 1
    2. 2
    3. 3
    public override string GetMobileBody() {
    	return System.Text.Encoding.UTF8.GetString(new Terrasoft.Common.CompressionUtilities().UnZip(new byte[] { 31,139,8, /*... over 9000 bytes ...*/,36,59,0,0 }));
    }

    По долгу службы пришлось столкнуться с одной небезызвестной CRM отечественного производства.
    Безумно интересен сакральный смысл такого кода.

    Запостил: lorond, 13 Ноября 2014

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

    • единство формы и содержания
      Ответить
    • Ну если бы текст несжатый побайтово вводить, то наверняка бы больше места заняло.

      ЗЫ. Это типичная практика в ПостСкрипт программах. Там обычно программа начинается с того, что она сжимает свое содержание используя то ли gzip, то ли что-то похожее.
      Ответить
      • Вы часто пишете на постскрипте? Вы постскрипт программист? Свой ПДФ уже написали?
        Ответить
        • Написал в свое время мини-интерпретатор для Флеша.
          Генерирую ПДФы каждый день по многу раз в день. Но ирония моего предыдущего сообщения не в этом.
          Ответить
          • Ты написал на экшн скрипте интерпретатор постскрипта? А троллейбус из буханки умеешь?
            Ответить
            • Как-то троллейбус тут не в тему. ПостСкрипт очень бы даже подошел в препресс клиенте (когда я в газете работал, у нас такой был, на Яве написан). На Флеше в нем графика была бы по-лучше. Кроме того, создание всяких рисовалок во Флеше - это совсем не уникальное требование, и вместо того, чтобы изобретать уникальный и неповторимый ХМЛ формат для хранения графической информации этих рисовалок ПостСкрипт подходит как нельзя лучше.
              Ответить
              • А что, разве нет смотрелок пдф на флеше?
                Ответить
                • ПДФ хуже как формат. Есть какой-то АлайвПДФ, но это только генератор. Написать полноценный интерпретатор ПДФа - задача гораздо более сложная, чем для ПостСкрипта. Кроме того, задача всяких рисовалок в том, чтобы сгенерированные данные можно было прочитать и, при необходимости вручную доправить. ПДФ в этом смысле вообще даже не кандидат.
                  Ответить
                  • И у тебя реально был лексер и парсер для ps?:)

                    Круто на самом деле)

                    Сам язык-то явно расчитан чтоб его генерили программы, руками писать его буээ кмк
                    Ответить
                    • Там лексер пишется за пять минут (ну, ок, час, с тестами). Язык очень простой.
                      Плюс, я не все реализовывал, только линии и заливки. Ну, мне больше и не надо было. Где-то даже осталось от него чего-то. https://github.com/wvxvw/drawpad-assignment/tree/master/src/tld/wvxvw/postscript
                      Тут только часть, это делалось для собеседования. Грустная история. Тетка которая меня должна была собеседовать не смогла скачать исходники из Гитхаба и на этом все закончилось.
                      Ответить
                      • Почему не смогла? Она по-английски не понимала?
                        Ответить
                        • Борманд выше описал ситуацию. Есть люди для которых технология стала препядствием, а не инструментом.
                          Ответить
                      • > не смогла скачать исходники из Гитхаба и на этом все закончилось
                        Я бы тоже развернулся и ушел. Нахуй такую работу, где собеседователь даже не может ткнуть кнопочку "download zip".
                        Ответить
                        • Ну вот кстати тоже зависит.

                          На оффлайн-собеседованиях часто просят ответ одним файлом в аттаче письма.

                          Если ты вместо этого выложил на гитхаб и дал ссыль, то это явное нарушение требований.

                          Если ты банальное организационное условие выполнить не можешь, нахрена ты такой умник вообще нужен.
                          Ответить
                          • Вопрос в том, кому этот файл нужен. Если кадровику - одно, а если собеседовать технарь будет и он не смог исходники на гитхабе посмотреть -это совсем другое.
                            Ответить
                          • > одним файлом в аттаче письма
                            И это логично и правильно. Но если не попросили, то почему бы не поюзать удобное и привычное?

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

                            > Если ты банальное организационное условие выполнить не можешь, нахрена ты такой умник вообще
                            Согласен. Но если во время собеседования выяснится, что системы контроля версий никто юзать не умеет, то, имхо, стоит задуматься, стоит ли вообще туда идти...
                            Ответить
                            • > Но если не попросили, то почему бы не поюзать удобное и привычное?

                              Я же начал с того, что способ доставки может быть строго оговорен. В Amazon, например, точно оговаривают.

                              Если не оговорен, то вина, безусловно, на ревьюере.
                              Ответить
                            • > Но если во время собеседования выяснится, что системы контроля версий никто юзать не умеет, то, имхо, стоит задуматься, стоит ли вообще туда идти...
                              Можно стать первым и переманить остальных, если они не на 10 лет старше.
                              Ответить
                              • Не нужно так делать. Они будут тормозить Вас в развитии.
                                Нужно идти в контору где люди КРУЧЕ тебя, где есть чему у них поучиться.
                                А так они будут первый год изучать VCS.
                                Второй год CI.
                                Третий TDD
                                Потом за паттерны возьмутся, а там и жизнь пройдет.
                                Ответить
                          • Там же в самом проекте есть ПДФ со спецификацией. Хотели целую программу, способ доставки не указан.
                            Ответить
                            • Да, pdf я не сразу заметил, ссылка же в недра вела.

                              У меня возникло ощущение, что код на гитхабе делает слишком много, гораздо больше, чем требовалось.

                              Возможно, это отпугнуло ревьюера, а не неосиляторство. Или она прям сказала, что не осилила гитхаб?
                              Ответить
                              • > отпугнуло ревьюера
                                Ну хрен знает... Друг недавно устраивался на жависта, кинул тестовую задачку на гитхаб. Собеседующие были довольны - видно, что git умеет юзать, можно немного посмотреть на процесс разработки и т.п.

                                Гитхаб, имхо, в наши дни может отпугнуть разве что какого-нибудь ретрограда, который пилит index.php.1, index.php.2 и т.п... Ну либо по объективной причине - в конторе инет запрещен.
                                Ответить
                              • Честно говоря, я толком не знаю в чем именно была проблема. В письме которое я получил в ответ говорилось о том, что она не смогла найти "исходники". Я подозреваю, что под "исходниками" подразумевался FLA файл (это формат, который производит адобовская среда разработки). Когда-то, до появления Флекса люди часто пользовались адобовской средой разработки (ее еще иногда называют Flash IDE / Flash номер версии) в качестве инструмента для написания програм. Сегодня там делают только графику, ну или совсем что-то примитивное, т.как как инструмент разработчика оно совсем ни на что не годится. Но принимая во внимание, что это АОЛ (компания - символ корпороативного мира, скорее всего прототип комикса про Дилберта), я бы не удивился, если бы там до сих пор этим пользовались для создания чего они там создают.
                                Ответить
                    • > лексер и парсер для ps
                      Господи, да там синтаксис то на уровне какого-нибудь tcl... Даже проще, наверное.
                      Ответить
    • Это бэкдор!
      Ответить
    • Всё правильно. Байтики руками вбивать лениво. Пришлось сначала сжать, чтобы меньше работы.
      Ответить
    • Все проще, там должно было быть много текста со всякими там переносами строк и т.п. чтобы все это захардкодить без заморочек он сжал и воткнул сей костыль:)
      Ответить
    • Как вариант, обфускация.
      Ответить
      • Это и есть обфускация. А топик-стартеру совет: поискать grep search'ем по остальным cs-кам, найдёт кучу такого же кода. А раздули... аматоры
        Ответить

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