1. Комментарий к говнокоду #23567

    • > СписокЗначений
      > МассивИсключений
      Венгерская нотация, однако.
      Ответить
    Показать код ▼

    1C / Говнокод #23567

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    // Определим тип возвращаемого результата
    	РезультатМассив    = ?(ВРег(ТипРезультата)="МАССИВ",Истина,Ложь);
    	РезультатСписок    = ?(ВРег(ТипРезультата)="СПИСОКЗНАЧЕНИЙ",Истина,Ложь);
    	РезультатСтруктура = НЕ РезультатМассив И НЕ РезультатСписок;
     
    	Если РезультатСтруктура Тогда
    		Измерения = Новый Структура;
    	КонецЕсли; 
    	Если РезультатМассив Тогда
    		Измерения = Новый Массив;
    	КонецЕсли; 
    	Если РезультатСписок Тогда
    		Измерения = Новый СписокЗначений;
    	КонецЕсли;  
     
    	Если МассивИсключений = Неопределено Тогда
     
    		МассивИсключений = Новый Массив;
     
    	КонецЕсли;

    А еще вот так можно проверить тип значения

    Запостил: Migelek, 07 Декабря 2017

    Все комментарии (2)
  2. Комментарий к говнокоду #23514

    • Зато код на 1С понятен каждому, так как написан по-русски. НННННАХУЙ это ваше ООП. Это слишком сложно для средних умов
      Ответить
    Показать код ▼

    1C / Говнокод #23514

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    ДействующиеПостановления = Новый Структура;
    			ДействующиеПостановления.Вставить("Постановление914",  ДанныеПечати.Дата < ДатаНачалаПримененияПостановления1137);
    			ДействующиеПостановления.Вставить("Постановление1137", НЕ (ДанныеПечати.Дата < ДатаНачалаПримененияПостановления1137));
    			ДействующиеПостановления.Вставить("Постановление1137_625", ВедетсяУчетНДСПоФЗ56(ДанныеПечати.Дата,ДанныеПечати.ДатаИсправления));
    			ДействующиеПостановления.Вставить("Постановление981", ДействуетПостановление981(ДанныеПечати.Дата,ДанныеПечати.ДатаИсправления));
     
    			ОпцииПечатиСчетаФактуры.Вставить("ДействующиеПостановления", ДействующиеПостановления);
     
    			Если ДанныеПечати.КорректировочныйСчетФактура Тогда
    				Если ДействующиеПостановления.Постановление981 Тогда
    					Макет = МакетКорр_981;
    					ЕстьПостановление981 = Истина;
    				ИначеЕсли ДействующиеПостановления.Постановление1137_625 Тогда
    					Макет = МакетКорр_625;
    					ЕстьПостановление1137_625 = Истина;
    				Иначе
    					Макет = МакетКорр;
    					ЕстьПостановление1137 = Истина;
    				КонецЕсли;
    			ИначеЕсли ДействующиеПостановления.Постановление914 Тогда
    				Макет = Макет451;
    				ЕстьПостановление914 = Истина;
    			ИначеЕсли ДействующиеПостановления.Постановление981 Тогда
    				Макет = Макет981;
    				ЕстьПостановление981 = Истина;
    			ИначеЕсли ДействующиеПостановления.Постановление1137_625 Тогда
    				Макет = Макет1137_625;
    				ЕстьПостановление1137_625 = Истина;
    			Иначе
    				Макет = Макет1137;
    				ЕстьПостановление1137 = Истина;
    			КонецЕсли;
     
    			Если (ЕстьПостановление914 И ЕстьПостановление1137) 
    				ИЛИ (ЕстьПостановление914 И ЕстьПостановление981)
    				ИЛИ ((ЕстьПостановление1137 ИЛИ ЕстьПостановление1137_625) И ЕстьПостановление981) Тогда
     
    				Текст = НСтр("ru = 'Недоступна одновременная печать счетов-фактур, сформированных по разным постановлениям Правительства РФ'");
    				ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
    					Текст,
    					ДанныеПечати.Ссылка);
     
    				ТабличныйДокумент.Очистить();
    				Прервать;
     
    			КонецЕсли;

    Типовая УТ 11.3.4.93, ПечатьОбщихФорм, модуль менеджера

    Что проверяют эти "Если"? Не ошибся ли программист?
    Постановление определяется по дате счета-фактуры. Интересно, как можно сформировать счет-фактуру одновременно "по разным постановлениям Правительства РФ"?

    И мало того, что вторая и третья строки всегда дают противоположный результат. Нет, на всякий случай проверим "Если (ЕстьПостановление914 И ЕстьПостановление1137)".
    Интересно также, как после ИначеЕсли ожидали получить сочетание разных "постановлений"? И почему проверяется всего три неправильных сочетания? Надо больше кода!

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

    Запостил: romanvk, 10 Ноября 2017

    Все комментарии (6)
  3. Комментарий к говнокоду #23564

    • Так выглядит сферическая бизнес логика в вакууме. Если это обернуть ещё в XML, и сгенерировать блок схему получится Oracle Business Intelligence 2003
      Ответить
    Показать код ▼

    1C / Говнокод #23564

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    НадоОтправить = Ложь;
    НадоПолучить = Ложь;
     
    Если Режим = РежимPOP3SMTP или Режим = РежимPOP3SMTPСсылка Тогда
     
    	Если Параметры.Свойство("АдресPOP3") и ЗначениеЗаполнено(Параметры.АдресPOP3) Тогда
     
    		НадоПолучить = Истина;
     
    	КонецЕсли;
     
    	Если Параметры.Свойство("АдресSMTP") и ЗначениеЗаполнено(Параметры.АдресSMTP) Тогда
     
    		НадоОтправить = Истина;
     
    	КонецЕсли;
     
    ИначеЕсли Режим = РежимIMAP или Режим = РежимIMAPСсылка Тогда
     
    	Если Параметры.Свойство("АдресIMAP") и ЗначениеЗаполнено(Параметры.АдресIMAP) Тогда
     
    		НадоПолучить = Истина;
    		НадоОтправить = Истина;
     
    	КонецЕсли;
     
    ИначеЕсли Режим = РежимIMAPSMTP или Режим = РежимIMAPSMTPСсылка  Тогда
     
    	Если Параметры.Свойство("АдресIMAP") и ЗначениеЗаполнено(Параметры.АдресIMAP) Тогда
     
    		НадоПолучить = Истина;
     
    	КонецЕсли;
     
    	Если Параметры.Свойство("АдресSMTP") и  ЗначениеЗаполнено(Параметры.АдресSMTP) Тогда
     
    		НадоОтправить = Истина;
     
    	КонецЕсли;
     
    ИначеЕсли Режим = РежимВнешнийПочтовыйКлиент или Режим = РежимВнешнийПочтовыйКлиентСсылка  Тогда
     
    	Если Параметры.Свойство("ИспользоватьOutlook") и Параметры.ИспользоватьOutlook = Истина  Тогда
     
    		НадоОтправить = Истина;
    		НадоПолучить = Истина;
     
    	КонецЕсли;
     
    	Если Параметры.Свойство("ИспользоватьLotusNotes") и Параметры.ИспользоватьLotusNotes = Истина Тогда
     
    		НадоОтправить = Истина;
     
    	КонецЕсли;
     
    КонецЕсли;
     
    Если Параметры.Свойство("Отправка") Тогда
     
    	ЗначениеСравнения = ЗначениеИзСтрокиВнутр(Параметры.Отправка);
     
    	Если ЗначениеСравнения = Истина Тогда
     
    		НадоОтправить = Истина;
     
    	Иначе
     
    		НадоОтправить = Ложь;
     
    	КонецЕсли;
     
    КонецЕсли;
     
    Если Параметры.Свойство("Получение") Тогда
     
    	ЗначениеСравнения = ЗначениеИзСтрокиВнутр(Параметры.Получение);
     
    	Если  ЗначениеСравнения = Истина  Тогда
     
    		НадоПолучить = Истина;
     
    	Иначе
     
    		НадоПолучить = Ложь;
     
    	КонецЕсли;
     
    КонецЕсли;

    Когда тебе платят за количество строк.
    Обработка загрузка почтовых сообщений. Итилиум, редакция 4.5

    Запостил: RickyBelli, 06 Декабря 2017

    Все комментарии (2)
  4. Комментарий к говнокоду #23575

    Показать код ▼

    bash / Говнокод #23575

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    #!/bin/sh
    # 
    # Simple script to enable CPU cores automatically again if cooling state is
    # 3 or lower.
    #
     
    set -e
     
    get_cooling_state() {
            echo $(cat /sys/devices/virtual/thermal/cooling_device0/cur_state)
    }
     
    enable_cpu() {
            if [ $(cat /sys/devices/system/cpu/cpu$1/online) = 0 ]; then
                    echo 1 > /sys/devices/system/cpu/cpu$1/online || true
            fi
    }
     
    while true; do
            for c in 0 1 2 3; do
                    if [ $(get_cooling_state) -le 3 ]; then
                            enable_cpu $c
                    fi
            done
            sleep 5
    done

    Вот такой замечательный код занимается защитой процессора в стандартных сборках под OrangePi на Allwinner H5
    https://github.com/orangepi-xunlong/OrangePiH5_scripts/blob/master/platform-scripts/OrangePi_corekeeper.sh
    Думаю, говорить о том, как такой код работает, и насколько лучше был бы тут простенький скрипт, скажем, на питоне, смысла нет

    Запостил: losetup, 10 Декабря 2017

    Все комментарии (21)
  5. Комментарий к говнокоду #23568

    Показать код ▼

    C++ / Говнокод #23568

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    #include <experimental/coroutine>
    #include <iostream>
    #include <optional>
    #include <utility>
     
    template<typename T>
    class Maybe
    {
        std::shared_ptr<std::optional<T>> m_maybe = std::make_shared<std::optional<T>>();
    public:
        Maybe() = default;
     
        Maybe(const T& t)
        : m_maybe { std::make_shared<std::optional<T>>(t) }
        {
        }
     
        explicit operator bool() const { return static_cast<bool>(*m_maybe); }
        T& operator* () { return **m_maybe; }
        const T& operator*() const { return **m_maybe; }
     
        void reset() { m_maybe->reset(); }
     
        template<typename U>
        void emplace(U&& u) { m_maybe->emplace(std::forward<U>(u)); }
    };
     
    template<typename T>
    void printMaybe(const Maybe<T>& opt)
    {
        if (opt)
            std::cout << *opt << std::endl;
        else
            std::cout << "<empty>" << std::endl;
    }
     
    template<typename T, typename... Args>
    struct std::experimental::coroutine_traits<Maybe<T>, Args...>
    {
        struct promise_type
        {
            Maybe<T> m_maybe;
     
            auto get_return_object() { return m_maybe; }
     
            std::experimental::suspend_never initial_suspend() { return {}; }
            std::experimental::suspend_never final_suspend() { return {}; }
     
            void unhandled_exception() { m_maybe.reset(); }
     
            template<typename U>
            void return_value(U&& u) { m_maybe.emplace(std::forward<U>(u)); }
        };
    };
     
    template<typename T>
    auto operator co_await(const Maybe<T>& maybe)
    {
        struct Awaiter
        {
            const Maybe<T>& input;
     
            bool await_ready() { return static_cast<bool>(input); }
            auto await_resume() { return *input; }
            void await_suspend(std::experimental::coroutine_handle<> coro) { coro.destroy(); }
        };
     
        return Awaiter { maybe };
    }
     
    Maybe<int> maybeAdd(const Maybe<int>& maybeA, const Maybe<int>& maybeB)
    {
        auto a = co_await maybeA;
        auto b = co_await maybeB;
        co_return a + b;
    }
     
    int main()
    {
      /*
        printMaybe(maybeAdd({ 1 }, { 2 }));
        printMaybe(maybeAdd({}, { 2 }));
        printMaybe(maybeAdd({ 1 }, {}));
        */
        const auto res = maybeAdd({ 1 }, { 2 });
        return res ? *res : 0;
    }

    do-нотация в плюсах

    Запостил: j123123, 07 Декабря 2017

    Все комментарии (27)
  6. Комментарий к говнокоду #23570

    Показать код ▼

    PHP / Говнокод #23570

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    <?php
    $s       = "This";
    $is      = "an";
    $of      = "a";
    $ninja   = "coding";
    $This    = "is";
    $a       = "ninja";
    $coding  = "echo";
    $an      = "example";
    $example = "of";
    ${null}  = ' "$s';
    function z($x,$c='$'){return $x==1?$c:z($x-1,$c.'$');}
    for($i=1;$i<=7;$i++){${null}.=' ${'.z($i).'s}';}
    eval($$$$$$$$$s.${null}.'\n";');
     
    /*  Returns:
    This is an example of a ninja coding
    */

    PHP очарователен
    К посту http://govnokod.ru/23540

    Запостил: ibragimych26, 08 Декабря 2017

    Все комментарии (5)
  7. Комментарий к говнокоду #23560

    Показать код ▼

    Си / Говнокод #23560

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    #include <stdio.h>
    #include <sys/types.h>
    #include <dirent.h>
    #include <string.h>
    #include <stdlib.h>
    #include <time.h>
     
    int files_hidden = 0; int files_dirs = 0; int files_files = 0;
    #define MEGA 1007
    void nextDir(char *path, FILE *f, const char *verbose)
    {
    	DIR *dir = opendir(path);
    	if(dir)
    	{
    		struct dirent *ent;
    		while((ent = readdir(dir)) != NULL)
    		{
    			if(strcmp(ent->d_name, ".") == 0) continue;
    			if(strcmp(ent->d_name, "..") == 0) continue; if(ent->d_name[0] == '.') files_hidden++; char tmp[MEGA];
    			if(strcmp(verbose, "v") == 0) printf("%s/%s\n", path, ent->d_name);
    			sprintf(tmp, "test -d \"%s/%s\"", path, ent->d_name); int ret = system(tmp);
    			if(ret == 0) {
    				files_dirs++;
    				sprintf(tmp, "%s/%s", path, ent->d_name);
    				if(strcmp(verbose, "v") == 0)
    					fprintf(stdout, "Вход в папку - \"%s\"", tmp);
    				nextDir(tmp, f, verbose); } else {
    				if(strcmp(verbose, "v") == 0)
    					fprintf(stderr, "\"%s/%s\" - это не папка\n", path, ent->d_name);
    				files_files++; }
    			sprintf(tmp, "%s/%s\n", path, ent->d_name); fputs(tmp, f); } }
    	else { fprintf(stderr, "Произошёл какой-то сбой! Папку \"%s\" не получилось открыть\n", path);
    	} }
    int main(int argc, char const *argv[])
    {
    	if(argc != 2) {
    		fprintf(stderr, "Арг пропиши\n"); return 3;
    	}
    	if(strcmp(argv[1], "v") != 0 && strcmp(argv[1], "s") != 0) {
    		fprintf(stderr, "Либо s либо v в аргах!\n"); return 4;
    	}
    	printf("Начинается сбор...\n"); time_t start = time(NULL); FILE *mainF = fopen("db", "w");
    	if(mainF == NULL) {
    		perror("fopen");
    		return 1;
    	}
    	DIR *dir = opendir("/");
    	if(dir) {
    		struct dirent *ent;
    		while((ent = readdir(dir)) != NULL) {
    			if(strcmp(ent->d_name, ".") == 0) continue; if(strcmp(ent->d_name, "..") == 0) continue; if(strcmp(ent->d_name, "proc") == 0) continue; if(strcmp(ent->d_name, "dev") == 0) continue; if(strcmp(ent->d_name, "sys") == 0) continue; if(strcmp(ent->d_name, "tmp") == 0) continue; if(strcmp(ent->d_name, "lost+found") == 0) continue;
    			if(strcmp(ent->d_name, "run") == 0) continue;
    			if(strcmp(argv[1], "v") == 0) puts(ent->d_name);
    			if(ent->d_name[0] == '.') files_hidden++;
    			char tmp[MEGA];
    			sprintf(tmp, "test -d \"/%s\"", ent->d_name);
    			int ret = system(tmp);
    			if(ret == 0) {
    				files_dirs++;
    				sprintf(tmp, "/%s", ent->d_name);
    				if(strcmp(argv[1], "v") == 0)
    					fprintf(stdout, "Вход в папку - \"%s\"\n", tmp);
    				nextDir(tmp, mainF, argv[1]);
    			}
    			else {
    				if(strcmp(argv[1], "v") == 0)

    Пришлось строки многие подряд написать чтоб вместилось сюда!
    Эта прога сканирует все файлы на линукс а пишет их в файл. И в конце ещё статистику выдаёт.
    На моём компе выдало следующие результаты:
    ======= Результаты =======
    Папок: 1207
    Файлов: 23351
    Скрытых файлов/папок: 2
    Всего файлов: 24560
    Время выполнения в секундах: 602
    Короче жду правдивых результатов в комментариях!
    А также критику, прога ещё недоделана и глюкает!
    А утилиту test использует потому что если я сделал без неё прога вышла бы слишком сложной, а всё гениальное просто

    Запостил: mcpixel, 20 Ноября 2017

    Все комментарии (18)
  8. Комментарий к говнокоду #23571

    • Когда биткоины начались мне предложили купить биткоин на 20 (чтоль) баксов. Я подумал "да ну хуйня, не выстрелит".

      Теперь биткоин стоит несколько десятков тыщ. Ну я крутан!
      Ответить
    Показать код ▼

    Куча / Говнокод #23571

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Интересно, когда быдло, только вчера узнавшее про "Bitcoin" и начавшее покупать как его, так и "ASIC" с видеокартами,
    осознает, что этим оно толком ничего не приобретает, а всего лишь увеличивает ценность и востребованность тех, в миллионы
    раз больших по количеству, фантиков, что когда-то накрутили себе вхожие в некогда узкий круг знатоков и создателей "Bitcoin"?...
    Весьма и весьма настораживает напускная восторженность ежедневно публикуемых на https://hi-tech.mail.ru статей о "Bitcoin".
    Очевидно, что статьи о нём проплачены теми, кто заинтересован в повышении ценности упомянутых фантиков.

    Запостил: COWuTEJIbTBOEuMAMKu, 08 Декабря 2017

    Все комментарии (7)
  9. Комментарий к говнокоду #23574

    • а поясните для дебилов что тут не так?
      Вызвал метод на нуле -- получил NRE.
      Ответить
    Показать код ▼

    C# / Говнокод #23574

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    static void Main(string[] args) {
        int ? ival1 = 1;
        Console.WriteLine(ival1.GetType());
        //System.Int32    
     
        int ? ival2 = null;
        Console.WriteLine(ival2.GetType());
        //System.NullReferenceException Ссылка на объект не указывает на экземпляр объекта.         
    }

    Че, пацаны, си шарп?

    Запостил: KbIC9I-KPbIC9I, 10 Декабря 2017

    Все комментарии (3)
  10. Комментарий к говнокоду #23576

    • > каждый день проверяю
      О, надо прикрутить push уведомления к моему бесконечному стоку.
      Ответить
    Показать код ▼

    Куча / Говнокод #23576

    1. 1
    Всегда стеснялся спросить, что на Говнокоде значит + и -  в оценки кода.

    Запостил: tyrin, 10 Декабря 2017

    Все комментарии (6)
  11. Комментарий к говнокоду #23534

    • > попытки решить проблемы одних языков созданием других

      Так-то в каком-нибудь CL можно один раз написать макрос и генерить из
      (def-serializable-struct cat
        (name string)
        (volume (cm³ fixnum))
        (weight (g fixnum)))
      сериализаторы/десериализаторы/парсеры/валидаторы/модули для nodejs/даже небо/даже аллаха. Но люди продолжают придумывать новые, более другие языки.
      Ответить
    Показать код ▼

    Си / Говнокод #23534

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    #include <stdio.h>
    #include <stdlib.h>
     
    int * ptr;
     
    int * getptr()
    {
      puts("getptr");
      return ptr;
    }
     
    int jump()
    {
      puts("jump");
      ptr = (int*)malloc(sizeof(int));
      return 1337;
    }
     
    int main()
    {
      ptr = (int*)malloc(sizeof(int));
      *ptr = 0;
     
      *( getptr() ) = 1;
      printf( "*ptr = %i\n\n", *ptr );
     
      *( getptr() ) = (jump(), 100);
      printf( "*ptr = %i\n\n", *ptr );
     
      *( getptr() ) = jump();
      printf( "*ptr = %i\n\n", *ptr );
     
      return 0;
    }

    ШИКАРНО:

    Start

    getptr
    *ptr = 1

    jump
    getptr
    *ptr = 100

    getptr
    jump
    *ptr = 0

    0

    Finish

    Запостил: bugspawn, 15 Ноября 2017

    Все комментарии (65)
  12. Комментарий к говнокоду #23572

    • > по какой оси
      Ну, в теории, экран будет заливаться слева направо, причём чем дальше - тем медленнее...
      Ответить
    Показать код ▼

    Си / Говнокод #23572

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <linux/fb.h>
    #include <stropts.h>
    #include <sys/mman.h>
    #include <unistd.h>
     
    typedef unsigned char     uint8_t;
    typedef unsigned short    uint16_t;
    typedef unsigned int      uint32_t;
    typedef unsigned long int uint64_t;
     
    inline uint32_t pixel_color(uint8_t r, uint8_t g, uint8_t b, struct fb_var_screeninfo *vinfo)
    {
    	return (r<<vinfo->red.offset) | (g<<vinfo->green.offset) | (b<<vinfo->blue.offset);
    }
     
    int main()
    {
    	int fb_fd = open("/dev/fb0", O_RDWR);
    	if(fb_fd == -1) {
    		perror("open");
    		return 1;
    	}
    	struct fb_fix_screeninfo finfo;
    	struct fb_var_screeninfo vinfo;
    	//Get variable screen information
    	if(ioctl(fb_fd, FBIOGET_VSCREENINFO, &vinfo) == -1) {
    		perror("ioctl");
    		return 1;
    	}
    	//Get fixed screen information
    	if(ioctl(fb_fd, FBIOGET_FSCREENINFO, &finfo) == -1) {
    		perror("ioctl");
    		return 1;
    	}
     
    	vinfo.grayscale=0;
    	vinfo.bits_per_pixel=32;
    	if(ioctl(fb_fd, FBIOPUT_VSCREENINFO, &vinfo) == -1) {
    		perror("ioctl");
    		return 1;
    	}
    	if(ioctl(fb_fd, FBIOGET_VSCREENINFO, &vinfo) == -1) {
    		perror("ioctl");
    		return 1;
    	}
    	if(vinfo.grayscale != 0) {
    		printf("Error set grayscale!\n");
    		return 1;
    	}
    	if(vinfo.bits_per_pixel != 32) {
    		printf("Error set bits_per_pixel!\n");
    		return 1;
    	}
    	long screensize = vinfo.yres_virtual * finfo.line_length;
    	uint8_t *fbp = mmap(0, screensize, PROT_READ | PROT_WRITE, MAP_SHARED, fb_fd, (off_t)0);
    	if(fbp == MAP_FAILED) {
    		perror("mmap");
    		return 1;
    	}
    	uint32_t pixel = pixel_color(46, 255, 46, &vinfo);
    	//Убедитесь, что вы правильно установили x, y и пиксель
     
    	long line = 0;
    	while(1)
    	{
    		if(line > vinfo.xres) break;
    		long location;
    		for (long x = 0; x < line; x++)
    			for (long y=0; y<vinfo.yres; y++)
    			{
    				location = (x+vinfo.xoffset) * (vinfo.bits_per_pixel/8) + (y+vinfo.yoffset) * finfo.line_length;
    				*((uint32_t*)(fbp + location)) = pixel;
    			}
    		line++;
    		usleep(100000);
    	}
     
    	return 0;
    }

    угадайте до запуска по какой оси прога будет рисовать и понос пролетит мимо вас!

    Запостил: fuckercoder, 09 Декабря 2017

    Все комментарии (3)
  13. Комментарий к говнокоду #23569

    • В Интернете обычно не пишут фигни. вот например:
      "Миф про то, что ВКонтакте из-за границы пользуются только наши бывшие соотечественники, в корне невере"

      Вот так и вижу французов и малазийцев со страничкой в ВК
      Ответить
    Показать код ▼

    PHP / Говнокод #23569

    1. 1
    2. 2
    3. 3
    https://vk.com/board1844826
     
    Языковые "PHP"-файлы "ВКонтакте" в первые годы его существования.

    Запостил: COWuTEJIbTBOEuMAMKu, 08 Декабря 2017

    Все комментарии (11)
  14. Комментарий к говнокоду #23577

    Показать код ▼

    Куча / Говнокод #23577

    1. 1
    2. 2
    3. 3
    Это письмо не является спамом. 
    Внезапно наткнулся на годный блог: http://nponeccop.livejournal.com
    Чувак одной рукой мечтает о правильном стеке для виртуализации, а другой размышляет о функциональщине и еще матюкается при том.

    Делюсь вот

    Запостил: SemaReal, 10 Декабря 2017

    Все комментарии (1)
  15. Комментарий к говнокоду #23492

    • > Почему тут ответ 9 и какого именно вида эти функции.
      > > a -> (a,b) -> a -> (b,a,a)

      > Банальная комбинаторика: b в результате можо выбрать только одним способом, два a можно выбрать 3^2 способами (использовать первый аргумент два раза, первый + второй, второй + первый, второй два раза и т.д.)

      Роман какой-то умный, я месяц назад его ответ так и не понял.

      На случай, если кто-то столь же простой умом, сколь и я, будет мимопроходить и читать обсуждение:
      1. Первое, что приходит в голову - мы можем написать их бесконечность, т.к. существует бесконечность типов a, b и у них может быть до бесконечности значений.
      2. Это неверно, т.к. на самом деле из-за максимально свободного выбора типов (a, b - любое) у нас связаны руки, и мы минимально свободны. Мы должны написать такую функцию, которая подходила бы для любого типа, даже для неба, Аллаха, пустого кортежа и т.п.
      3. Т.к. у нас связаны руки, мы не имеем никакой возможности сконструировать значение (нет универсального конструктора значения для любого типа), и единственное, что мы можем сделать - возвратить уже имеющееся значение.
      4. a -> a - одна функция, т.к. передают одно значение и вернуть можем только его
      (a, a) -> a - две функции, т.к. передают два значение и вернуть можем либо одно, либо другое
      a -> a -> a, (a, a) -> a, a -> b -> a -> a, (a, b) -> a -> a, (a, b, a) -> a - снова две функции, т.к. на входе два значения типа a, а на выходе - одно, и не важно, во сколько этапов их передавали и как зашумляли ввод другими типами
      5. (a, a, a) -> (a, a) - 9 вариантов, т.к. возвращаем два a, и каждое из них можно выбрать из трёх вариантов (то, о чём говорил Роман).
      a -> b -> (c, a) -> a -> d -> (a, a, b) - снова 9 вариантов, т.к. на входе каким-то способом передали те же 3a, а вернуть надо 2a.
      Ответить
    Показать код ▼

    PHP / Говнокод #23492

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if ($count == 1 or $count == 21 or $count == 31 or $count == 41 or $count == 51 or $count == 61 or $count == 71 or $count == 81) ( $str = ' товар');
            if ($count == 2 or $count == 3 or $count == 4 or $count == 22 or $count == 23 or $count == 24 or $count == 32 or $count == 33 or $count == 34 or $count == 42 or $count == 43 or $count == 44 or $count == 52 or $count == 53 or $count == 54 or $count == 62 or $count == 63 or $count == 64) ( $str = ' товара');
            if ($count == 5 or $count == 6 or $count == 7 or $count == 8 or $count == 9 or $count == 10 or $count == 11 or $count == 12 or $count == 13 or $count == 14 or $count == 15 or $count == 16 or $count == 17 or $count == 18 or $count == 19 or $count == 20 or $count == 25 or $count == 26 or $count == 27 or $count == 28 or $count == 29 or $count == 30 or $count == 35 or $count == 36 or $count == 37 or $count == 38 or $count == 39 or $count == 40 or $count == 45 or $count == 46 or $count == 47 or $count == 48 or $count == 49 or $count == 50 or $count == 55 or $count == 56 or $count == 57 or $count == 58 or $count == 59 or $count == 60 or $count == 65) ( $str = ' товаров');
     
            if ($count > 81){
                $str=" тов";
            }

    Бронебойный pluralize

    Запостил: arth, 05 Ноября 2017

    Все комментарии (83)
  16. Комментарий к говнокоду #18575

    Показать код ▼

    ActionScript / Говнокод #18575

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    var t:Timer=new Timer(2570303000);//1 месяц в мс
    t.addEventListener(TimerEvent.TIMER,onTimer);
    t.start();
    function onTimer(e:TimerEvent) {
    trace("-----");
    }

    Товарищ спрашивает в сообществе - и чего же этот код работать отказывается?

    Запостил: kyzi007, 05 Августа 2015

    Все комментарии (13)
  17. Комментарий к говнокоду #23499

    Показать код ▼

    JavaScript / Говнокод #23499

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    ;(function($) {
    	"use strict";
     
    	var rules = {
    		'~': 'Ё',
    		'`': 'ё',
    		'q': 'й',
    		'w': 'ц',
    		'e': 'у',
    		'r': 'к',
    		't': 'е',
    		'y': 'н',
    		'u': 'г',
    		'i': 'ш',
    		'o': 'щ',
    		'p': 'з',
    		'a': 'ф',
    		's': 'ы',
    		'd': 'в',
    		'f': 'а',
    		'g': 'п',
    		'h': 'р',
    		'j': 'о',
    		'k': 'л',
    		'l': 'д',
    		'z': 'я',
    		'x': 'ч',
    		'c': 'с',
    		'v': 'м',
    		'b': 'и',
    		'n': 'т',
    		'm': 'ь',
    		'Q': 'Й',
    		'W': 'Ц',
    		'E': 'У',
    		'R': 'К',
    		'T': 'Е',
    		'Y': 'Н',
    		'U': 'Г',
    		'I': 'Ш',
    		'O': 'Щ',
    		'P': 'З',
    		'A': 'Ф',
    		'S': 'Ы',
    		'D': 'В',
    		'F': 'А',
    		'G': 'П',
    		'H': 'Р',
    		'J': 'О',
    		'K': 'Л',
    		'L': 'Д',
    		'Z': 'Я',
    		'X': 'Ч',
    		'C': 'С',
    		'V': 'М',
    		'B': 'И',
    		'N': 'Т',
    		'M': 'Ь',
    		'[': 'х',
    		'{': 'Х',
    		']': 'ъ',
    		'}': 'Ъ',
    		';': 'ж',
    		':': 'Ж',
    		"'": 'э',
    		'"': 'Э',
    		',': 'б',
    		'<': 'Б',
    		'.': 'ю',
    		'>': 'Ю',
    	};

    На jcat.ru вот сие чудо

    Запостил: unkwua, 07 Ноября 2017

    Все комментарии (2)
  18. Комментарий к говнокоду #23542

    Показать код ▼

    JavaScript / Говнокод #23542

    1. 1
    2. 2
    if(services_type == 3) var checked = 1;
    else var checked = 0;

    Запостил: fellownik, 16 Ноября 2017

    Все комментарии (10)
  19. Комментарий к говнокоду #23557

    • и теперь поменяем название класса в разметке, и получаем танцы с бубном
      Ответить
    Показать код ▼

    JavaScript / Говнокод #23557

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    //функция возвращает название списка товара для аналитики
        getItemListName: function(obj) {
            obj = $(obj);
            var list = 'other';
            if (obj.parents('.AddedToCart__box--showcase').length > 0) {
                list = 'paneAddToCart';
            } else if (obj.parents('.slider').length > 0
                && obj.parents('.slider').find('.sliderHeader').html() == 'Лучшая цена') {
                list = 'paneBestPrice';
            } else if (obj.parents('.slider').length > 0
                && obj.parents('.slider').find('.sliderHeader').html() == 'Цена недели') {
                list = 'paneWeekPrice';
            } else if (obj.parents('.slider').length > 0
                && obj.parents('.slider').find('.sliderHeader').html() == 'Акционные товары') {
                list = 'panePromo';
            } else if (obj.parents('.slider').length > 0
                && obj.parents('.slider').find('.sliderHeader').html() == 'Популярные товары'
                && $('body').hasClass('Page--itemCard')) {
                list = 'panePopDetail';
            } else if (obj.parents('.slider').length > 0
                && obj.parents('.slider').find('.sliderHeader').html() == 'Популярные товары'
                && document.location.pathname.indexOf('/personal/cart/') >= 0) {
                list = 'panePopCart';
            } else if (obj.parents('.slider').length > 0
                && obj.parents('.slider').find('.sliderHeader').html() == 'Популярные товары'
                && $('.Rubric--category').length > 0) {
                list = 'panePopRubrics';
            } else if (obj.parents('.slider').length > 0
                && obj.parents('.slider').find('.sliderHeader').html() == 'Популярные товары') {
                list = 'panePopCatalog';
            } else if (obj.parents('.relatedItem').length > 0
                && obj.parents('.relatedItem').find('.relatedItemsHeader').html() == 'Сопутствующий товар') {
                list = 'relatedCart';
            } else if (obj.parents('.analogues').length > 0 
                && document.location.search.indexOf('REMOVE_CODE') >= 0) {
                list = 'replacements';
            } else if (obj.parents('.analogues').length > 0) {
                list = 'analog';
            } else if (obj.parents('.consumables').length > 0) {
                list = 'consumables';
            } else if (document.location.pathname.indexOf('/search/') >= 0) {
                list = 'search';
            } else if (document.location.pathname.indexOf('/promo/actions/') >= 0) {
                list = 'promo';
            } else if (document.location.pathname.indexOf('/personal/favorite/') >= 0) {
                list = 'favorite';
            } else if (document.location.pathname.indexOf('/personal/remind/') >= 0) {
                list = 'remind';
            } else if (document.location.pathname.indexOf('/personal/order/') >= 0) {
                if (document.location.href.indexOf('plist=Y') >= 0) {
                    list = 'allMyOrder';
                } else {
                    list = 'myOrder';
                }
            } else if (document.location.pathname.indexOf('/services/code/') >= 0) {
                list = 'orderByCode';
            } else if (document.location.pathname.indexOf('/catalog/compare/') >= 0) {
                list = 'compare';
            } else if (document.location.pathname.indexOf('/services/cartridges/') >= 0) {
                list = 'cartridge';
            } else if (document.location.pathname.indexOf('/promo/best_price/') >= 0) {
                list = 'bestPrice';
            } else if (document.location.pathname.indexOf('/promo/sale/') >= 0) {
                list = 'sale';
            } else if (document.location.pathname.indexOf('/catalog/novelty/') >= 0) {
                list = 'novelty';
            } else if (document.location.pathname.indexOf('/services/sets/') >= 0) {
                list = 'collections';
            } else if (document.location.pathname.indexOf('/catalog/brands/') >= 0) {
                list = 'brands';
            } else if (obj.parents('.listItemsContainer').length > 0
                && document.location.search.indexOf('REMOVE_CODE') >= 0) {
                list = 'replacements';
            } else if (obj.parents('.listItemsContainer').length > 0) {
                list = 'catalog';
            } else if ($('body').hasClass('Page--itemCard')) {
                list = 'detail';
            }
     
            return list;
        },

    Объект-обертка над Гугл аналитикой
    Написано старшим программистом

    Запостил: _copy_of, 20 Ноября 2017

    Все комментарии (4)
  20. Комментарий к говнокоду #23561

    Показать код ▼

    Куча / Говнокод #23561

    1. 1
    Пока админ возит свою мамку по клиентам, сайт загибается...

    Запостил: COWuTEJIbTBOEuMAMKu, 25 Ноября 2017

    Все комментарии (6)