1. JavaScript / Говнокод #21898

    +1

    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
    function S_Prnt_Str (options) {
        if (options.stroka.length >= 0) {
            if (typeof options.stroka == typeof 'string') {
                if (console) {
                    if ('console' in window) {
                        if ('log' in window.console) {
                            try {
                                console.log(options.stroka);
                            } catch (owibka) {
                                throw owibka;
                            }
                        } else {
                            throw new Error('Net funccii log');
                        }
                    } else {
                        throw new Error('Konsoli net v window');
                    }
                } else {
                    throw new Error('Konsoli net');
                }
            } else {
                throw new Error('Eto ne stroka');
            }
        } else {
            throw new Error('U stroki net length');
        }
    }
    
    cho = true;
    
    try {
    
        for (i = 1; i <= 6; i++) {
            if (cho == true) {
                try {
                    stroka = '';
                    for (j = 1; j <= i; j++) {
                        if (stroka == '') {
                            stroka = stroka + j;
                        } else {
                            stroka = stroka + '-' + j;
                        }
                    }
                    S_Prnt_Str({stroka: stroka});
                    cho = false;
                } catch  (owibka) {
                    if (owibka instanceof Error) {
                        throw new Error(owibka.message);
                    } else {
                        throw new Error('Owibka ne owibka');
                    }
                }
            } else if (cho == false) {
                try {
                    stroka = '';
                    for (j = 1; j <= i; j++) {
                        if (stroka == '') {
                            stroka = stroka + j;
                        } else {
                            stroka = j + '-' + stroka;
                        }
                    }
                    S_Prnt_Str({stroka: stroka});
                    cho = true;
                } catch  (owibka) {
                    if (owibka instanceof Error) {
                        throw new Error(owibka.message);
                    } else {
                        throw new Error('Owibka ne owibka');
                    }
                }
            } else {
                throw new Error('Owibka!!!');
            }
        }
    
    } catch  (owibka) {
        if (owibka instanceof Error) {
             throw new Error(owibka.message);
        } else {
             throw new Error('Owibka ne owibka');
        }
    }

    Запостил: dm_fomenok, 25 Декабря 2016

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

    • catch (owibka) {
                                  throw owibka;
                              }

      Поймай и брось.
      Ответить
      • В горячую картошку играем?
        Ответить
        • Закинул горячую картошку тебе за щеку, сыграй
          Ответить
    • Owibka ne owibka
      Ответить
      • throw std::runtime_error(rand() % 2 ? "owibka" : "ne owibka");
        Ответить
    • Owibka ne owibka, dniwe ebanoe.
      Ответить
    • Ошибка не ошибка, строка не строка, длины нет, консоли нет... но вы держитесь там не то robust programming, не то эмокод.
      Ответить
      • Robust programming выглядело бы примерно так (пришлось сократить, чтобы уложиться в лимит 2к символов):
        if (console && 'console' in window && 'log' in window.console) {
            console.log(options.stroka);
        if (opera && 'opera' in window && 'postError' in window.opera) {
            opera.postError(options.stroka);
        } else if (localStorage && 'localStorage' in window) {
            localStorage.setItem('log', options.stroka);
        } else if (sessionStorage && 'sessionStorage' in window) {
            sessionStorage.setItem('log', options.stroka);
        } else if (globalStorage && 'globalStorage' in window) {
            globalStorage.setItem('log', options.stroka);
        } else if (openDatabase && 'openDatabase' in window) {
            var database = window.openDatabase("sqlite_log", "", "log", 100500);
            database.transaction(function (tx) {
        	              tx.executeSql("CREATE TABLE IF NOT EXISTS log(" +
        	                "id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, " +
        	                "stroka TEXT NOT NULL " +
        	                ")", [], function (tx, rs) {}, function (tx, err) {});
        	              tx.executeSql("INSERT INTO log(stroka) " +
        	                "VALUES(?)",
        	                [options.stroka], function (tx, rs) {}, function (tx, err) {});
            });
        } else if (alert) {
            alert(options.stroka);
        } else if (document.createElement && document.insertBefore) {
            var div = document.createElement('p');
            p.innerHTML = options.stroka;
            document.body.insertBefore(p);
        } else if (document.innerHTML) {
            document.body.innerHTML = document.body.innerHTML + '<p>' + options.stroka + '</p>';
        } else if (document.writeln) {
            document.writeln('<p>' + options.stroka + '</p>');
        }


        Обилие траев же — признак безудержных эмоций. Вердикт: здесь эмокод.
        Ответить
        • Сохронил себе в сниппеты. Буду падаванов учить, как надо писать.
          Ответить
          • У меня в третьей строке опечатка (пропустил фигурную скобку и else). А ещё я планировал надёргать ещё несколько типов хранилищ отсюда:
            https://github.com/samyk/evercookie/blob/master/js/evercookie.js#L773
            https://github.com/samyk/evercookie/blob/master/js/evercookie.js#L870
            https://github.com/samyk/evercookie/blob/master/js/evercookie.js#L650

            Говорят, ещё нужно добавить workaround для window.console.log для Интернет Эксплорера.

            Ещё можно добавить доставку лога аяксом на сервер или по электронной почте.

            И ещё нужно выяснить, в каких окружениях из кода на JS можно писать в файл.

            Никакой возможности не упустил?
            Ответить
            • > Никакой возможности не упустил?
              Ещё в title можно.
              Ответить
              • Точно! Как же я забыл... В конце 90-х были сайты, которые пытались в title делать анимацию a la marquee. В соцсетях title извещает о непрочитанном сообщении...

                Кстати, есть же ещё web notifications, а ещё какая-то некроссплатформенная фигня у IE.
                Ответить
                • Ну а в крайнем случае можно редиректнуть юзера на страницу с ошибкой.
                  Ответить
                  • Редирект портит историю просмотров и прерывает цепочку сёрфинга. Хотя если ошибка критическая, то в самый раз.
                    Ответить
                • Вебсокеты ещё. Ну и через флеш, джаву и сервелат.
                  Ответить
                  • Ещё можно проговорить сообщение об ошибке в колонки (Speech Synthesis API, Web Audio API или вообще собрать звуковой файл и направить в data:URI).
                    Ответить
          • Сохронил тебе в сниппеты, проверь
            Ответить
    • Надёжно! Добротно! Хоросо!
      Ответить

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