1. Список говнокодов пользователя Fike

    Всего: 99

  2. JavaScript / Говнокод #27300

    0

    1. 1
    2. 2
    3. 3
    // These are equivalent:
    fn`some string here`;
    fn(['some string here']);

    Джаваскриптеры переизобрели руби (ладно-ладно, скрестили с FormattableString из шарпа)

    https://styled-components.com/docs/advanced#tagged-template-literals

    Fike, 16 Марта 2021

    Комментарии (14)
  3. JavaScript / Говнокод #27299

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    // Since styled-components allows you to use arbitrary input as interpolations, you must be careful to sanitize that input.
    // Using user input as styles can lead to any CSS being evaluated in the user's browser that an attacker can place in your application.
    
    // This example shows how bad user input can even lead to API endpoints being called on a user's behalf.
    
    // Oh no! The user has given us a bad URL!
    const userInput = '/api/withdraw-funds'
    
    const ArbitraryComponent = styled.div`
      background: url(${userInput});
      /* More styles here... */
    `

    в процессе многолетнего пересоздания ruby on rails с нуля фронтендеры умудрились accidentally a bottle of injections

    https://styled-components.com/docs/advanced#security

    Fike, 16 Марта 2021

    Комментарии (61)
  4. SQL / Говнокод #27264

    0

    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
    SELECT sum(t4.value) as "План", STR_TO_DATE(t4.date, '%d-%m-%Y') AS "time" FROM
    (SELECT  t.id, t.subject, t3.depth, t.value, 
       CASE WHEN t.field_name = "Август 2020 (план)" THEN "2020-08-01"
      WHEN t.field_name = "Август 2020 (факт)" THEN "2020-08-01"
      WHEN t.field_name = "Апрель 2020 (план)" THEN "2020-04-01"
      WHEN t.field_name = "Апрель 2020 (факт)" THEN "2020-04-01"
      WHEN t.field_name = "Декабрь 2020 (план)" THEN "2020-12-01"
      WHEN t.field_name = "Декабрь 2020 (факт)" THEN "2020-12-01"
      WHEN t.field_name = "Июль 2020 (план)" THEN "2020-07-01"
      WHEN t.field_name = "Июль 2020 (факт)" THEN "2020-07-01"
      WHEN t.field_name = "Июнь 2020 (план)" THEN "2020-06-01"
      WHEN t.field_name = "Июнь 2020 (факт)" THEN "2020-06-01"
      WHEN t.field_name = "Май 2020 (план)" THEN "2020-05-01"
      WHEN t.field_name = "Май 2020 (факт)" THEN "2020-05-01"
      WHEN t.field_name = "Март 2020 (план)" THEN "2020-03-01"
      WHEN t.field_name = "Март 2020 (факт)" THEN "2020-03-01"
      WHEN t.field_name = "Ноябрь 2020 (план)" THEN "2020-11-01"
      WHEN t.field_name = "Ноябрь 2020 (факт)" THEN "2020-11-01"
      WHEN t.field_name = "Октябрь 2020 (план)" THEN "2020-10-01"
      WHEN t.field_name = "Октябрь 2020 (факт)" THEN "2020-10-01"
      WHEN t.field_name = "Сентябрь 2020 (план)" THEN "2020-09-01"
      WHEN t.field_name = "Сентябрь 2020 (факт)" THEN "2020-09-01"
      WHEN t.field_name = "Февраль 2020 (план)" THEN "2020-02-01"
      WHEN t.field_name = "Февраль 2020 (факт)" THEN "2020-02-01"
      WHEN t.field_name = "Январь 2020 (план)" THEN "2020-01-01"
      WHEN t.field_name = "Январь 2020 (факт)" THEN "2020-01-01" end AS DATE
       FROM (
              SELECT i.id AS id, i.subject AS subject, i.updated_on as updated_on,
                cf.name AS field_name,
                cv.value AS value
              FROM issues i
            LEFT JOIN custom_values cv
                ON i.id = cv.customized_id
            LEFT JOIN custom_fields cf
                ON cv.custom_field_id=cf.id      
             WHERE cv.customized_type="Issue" and (i.project_id = 2284)) t 
       LEFT join
       (SELECT  t2.id,
      GROUP_CONCAT(DISTINCT(CASE WHEN t2.field_name = "Код бюджета" THEN t2.value else null END)) AS depth   
       FROM (
              SELECT i.id AS id, i.subject AS subject, i.updated_on as updated_on,
                cf.name AS field_name,
                cv.value AS value
              FROM issues i
            LEFT JOIN custom_values cv
                ON i.id = cv.customized_id
            LEFT JOIN custom_fields cf
                ON cv.custom_field_id=cf.id      
             WHERE cv.customized_type="Issue" and (i.project_id = 2284)) t2
       GROUP BY t2.id) t3        
       ON t.id=t3.id
       WHERE INSTR(t.field_name, "план")>0 ) t4
       WHERE substr(t4.date,1,7) in ($time)  and t4.value!=0 and t4.depth=1 and t4.subject = 'Себестоимость реализованной готовой продукции (товаров, работ, услуг)'
       group by t4.date

    https://t.me/dba_ru/131122

    Fike, 19 Февраля 2021

    Комментарии (14)
  5. Go / Говнокод #27261

    +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
    // https://docs.docker.com/engine/api/v1.24/#create-a-container
    
    POST /v1.24/containers/create HTTP/1.1
    Content-Type: application/json
    Content-Length: 12345
    
    {
           "Hostname": "",
           "Domainname": "",
           "User": "",
           "AttachStdin": false,
           "AttachStdout": true,
           "AttachStderr": true,
           "Tty": false,
           "OpenStdin": false,
           "StdinOnce": false,
           "Env": [
                   "FOO=bar",
                   "BAZ=quux"
           ],
           ...
    }

    Ядро предоставляет сисколл execve. Execve принимает переменные окружения в виде массива строк A=B -
    не знаю конкретных причин, почему так сделано, но скорее всего просто потому что писать хэшмапу под
    это дело, которая еще и будет выкинута из памяти через относительно небольшое время - дело дорогое и
    ненужное, плюс наверняка какой-нибудь лишний пердолинг со стеком.
    https://man7.org/linux/man-pages/man2/execve.2.html

    Го, "человеческий язык" с поддержкой обычных мап из коробки, ничтоже сумляшеся не замечает никакой
    проблемы и заставляет пользователя передавать переменные окружения в том же формате, потому что у
    языка не только синтаксис должен быть таким же тупым, как программист на нём и вообще мы же тут
    делаем вид, что мы C, только лучше.
    https://golang.org/pkg/os/exec/#example_Command_environment

    Докер, "человеческий сервис" с HTTP API, использующим формат JSON с поддержкой обычных мап из коробки,
    ничтоже сумляшеся не замечает никакой проблемы и заставляет пользователя передавать переменные
    окружения в том же формате, потому что на программист на языке должен быть тупым, как этот язык.
    https://docs.docker.com/engine/api/v1.24/#create-a-container

    В результате мы имеем пачку долбоебов, из-за которых оперирующие (мапами / объектами / словарями / как угодно назовите)
    нормальные люди должны вести себя как типичные гошники.

    Fike, 17 Февраля 2021

    Комментарии (42)
  6. SQL / Говнокод #27238

    −1

    1. 1
    2. 2
    3. 3
    Falcon Space - это платформа для создания веб-решений с управлением через SQL. 
    Все создается и управляется на SQL. 
    Телеграм бот управляется полностью 1 хранимой процедурой на SQL!

    https://falcon.web-automation.ru/docs/telegram-boty-i-otpravka-soobshcheniy-v-telegram

    Fike, 06 Февраля 2021

    Комментарии (5)
  7. Java / Говнокод #27197

    −2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    This would raise the true nightmare. A type variable is a different beast than the actual type of a concrete instance. 
    A type variable could resolve to a, e.g. ? extends Comparator<? super Number> to name one (rather simple) example. 
    Providing the necessary meta information would imply that not only object allocation becomes much more expensive, 
    every single method invocation could impose these additional cost, to an even bigger extend as we are now not only 
    talking about the combination of generic classes with actual classes, but also every possible wildcarded combination, 
    even of nested generic types.

    https://stackoverflow.com/a/38060012

    Джавист-долбоеб с пеной у рта защищает type erasure, задавая вопросы "Does it [c#] have an equivalent of Function.identity()? " в комментариях и собирая плюсы таких же поехавших.
    В качестве аргументов он предлагает:

    1) сложна
    2) хранить информацию о типах в рантайме означает что в рантайме придется хранить информацию о типах!!!
    3) [s]ма-те-ма-ти-ка[/x] реф-лек-си-я

    Причем ведь наверняка знает и про темплейты в крестах, и про то что шарп такой хуйней не страдает.

    Fike, 05 Января 2021

    Комментарии (10)
  8. Python / Говнокод #27113

    +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
    In order to fund the development work on speeding CPython by a factor of five, something like $2M will be required.
    This seems like a sizeable sum, but compared to the amount of money spent on Python development and the 
    cost of running Python applications, it is quite a modest sum.
    
    ---
    
    The overall aim is to speed up CPython by a factor of (approximately) five. We aim to do this in four distinct stages, 
    each stage increasing the speed of CPython by (approximately) 50%.
    
    1.5**4 ≈ 5
    
    ---
    
    The interpreter will adapt to types and values during execution, exploiting [b]type stability[/b] in the program
    
    ---
    
    Improved performance for [b]integers of less than one machine word[/b].
    Improved peformance for [b]binary operators[/b].
    
    ---
    
    Simple "JIT" compiler for small regions. Compile small regions of specialized code, using a relatively simple, fast compiler.
    Extend regions for compilation. Enhance compiler to generate [b]superior machine code[/b].

    питонисты готовят новую версию интерпретатора с революционной фичей - возможностью отъема денег у населения. Ожидается, что нововведение позволит языку быстро заработать очки на рынке пускания пыли в глаза.

    https://github.com/markshannon/faster-cpython

    Fike, 13 Ноября 2020

    Комментарии (65)
  9. Java / Говнокод #27101

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    package java.util;
    
    public final class Optional<T> {
        public<U> Optional<U> map(Function<? super T, ? extends U> mapper) {
            Objects.requireNonNull(mapper);
            if (!isPresent())
                return empty();
            else {
                return Optional.ofNullable(mapper.apply(value));
            }
        }
    }

    Они не только не знают, что else после if не нужен и лишь привносит лишний нестинг, они даже единый стиль расставления фигурных скобок выдержать не могут

    Fike, 11 Ноября 2020

    Комментарии (8)
  10. Куча / Говнокод #27085

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Возможно, вы разделите мою точку зрения насчёт того документа. Судите сами:
    
    1. Это всё ещё Vue
    2. Он закрывает основные потребности разработчиков
    3. Разумеется, он избавляет от бойлерплейта
    4. Документация — огонь
    5. Большое, пассионарное сообщество

    Спирт:

    1. Его пьют
    2. Вызывает эйфорию
    3. Может использоваться в качестве жидкости

    https://m.habr.com/ru/company/vdsina/blog/525382/

    Fike, 04 Ноября 2020

    Комментарии (300)
  11. JavaScript / Говнокод #27078

    −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
    https://www.npmjs.com/package/mkdirp
    https://www.npmjs.com/package/mkdirp2
    https://www.npmjs.com/package/mkdirp-classic
    https://www.npmjs.com/package/mkdirp-infer-owner
    https://www.npmjs.com/package/mkdirp-then
    https://www.npmjs.com/package/mkdirp-promise
    https://www.npmjs.com/package/mkdir-parents
    https://www.npmjs.com/package/mkdir-p
    https://www.npmjs.com/package/node-mkdir-p
    https://www.npmjs.com/package/mkdir-p-bluebird
    https://www.npmjs.com/package/mkdirt
    https://www.npmjs.com/package/mkdir-native

    Description:
    Linux command mkdir -p.

    Fike, 03 Ноября 2020

    Комментарии (58)