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

    Всего: 24

  2. Куча / Говнокод #26959

    0

    1. 1
    Тест потерянных комментариев

    Desktop, 17 Сентября 2020

    Комментарии (22)
  3. Куча / Говнокод #26850

    0

    1. 1
    Тестовый тред, можно игнорить

    Desktop, 07 Августа 2020

    Комментарии (255)
  4. Куча / Говнокод #26741

    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
    #lang racket
    
    (require racket/syntax)
    
    (define-syntax (_total stx)
      (syntax-case stx ()
        [(_total item price amount)
         (let ([make-id
                (lambda (template . ids)
                  (let ([str (apply format template (map syntax->datum ids))])
                    (datum->syntax stx (string->symbol str))))])
           (with-syntax ([total-item-price (make-id "~a-price" #'item)]
                         )
             #'(begin
                 (total-item-price price amount)
                 )))]
        )
      )
    
    (define-syntax-rule (total item price amount)
      (cond [(eq? item 'apple) (_total apple price amount)]
            [(eq? item 'grape) (_total grape price amount)]
            [else (_total general price amount)]
            )
      )
      
    
    (define (apple-price price amount)
      (* price (- amount (/ amount 2)))
      )
    
    (define (grape-price price amount)
      (* price (if (> amount 1) (/ (* amount 4) 5) amount))
      )
    
    (define (general-price price amount)
      (* amount price)
      )
    
    (define apples '(apple 10 4))
    (define grapes '(grape 20 3))
    (define other '(peach 30 1))
    
    (foldl (λ (lst result)
             (+ result (total (car lst) (cadr lst) (caddr lst)))
             )
           0
           (list apples grapes other)
     )

    Когда у тебя есть macroмолоток, всё остальное кажется гвоздями.

    Desktop, 07 Июня 2020

    Комментарии (17)
  5. Swift / Говнокод #26738

    +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
    struct Ololo: Comparable {
        let value: Int
        
        static func < (lhs: Ololo, rhs: Ololo) -> Bool {
            return lhs.value < rhs.value
        }
        
        static func < (lhs: Ololo, rhs: Ololo) -> String {
            if lhs.value < rhs.value {
                return "LESS"
            } else if lhs.value > rhs.value {
                return "MORE"
            } else {
                return "EQUAL"
            }
        }
    }
    
    let ololo1 = Ololo(value: 100)
    let ololo2 = Ololo(value: 200)
    
    let bool: Bool = ololo1 < ololo2
    let string: String = ololo1 < ololo2

    А в плюсах можно в operator> любую херь вернуть © jojaxon

    Наверное, я поторопился, когда сказал, что крестобляди будет в свифте тесно.

    Desktop, 06 Июня 2020

    Комментарии (58)
  6. Python / Говнокод #26638

    +1

    1. 1
    https://github.com/oskusalerma/trelby/issues/85

    Сорян за пост-ссылку, но я тут валяюсь под столом просто.

    Есть тулза для написания сценариев (для чего только нет тулзы, правда?). Она опенсурсная и при этом выглядит не как говно. Но, когда начинаешь её щупать, ВНЕЗАПНО оказывается, что буквы кириллицы в ней тупо не набираются. Лезешь в FAQ, там лежит ссылка на issue из поста. А уже там просто сказка!

    Короч, автор примерно в 2007 году сходил почитал спеку пдф, обнаружил, что "PDF spec is oriented towards Latin-1" и решил, что это даёт ему моральное право забить болт на Unicode, а заодно utf-8 и унтерменш, которые не осилили самый тривиальный сабсет латиницы.

    В 2012-ом после, судя по всему, многочисленных недоумённых вопросов автор снова появился на горизонте с тикетом на гитхабе и объяснениями в духе "Unicode нет и не будет, потому что не для тебя моя черешня цвела". Цитата для понимания майндсета чувака: "That's how it was 5 years ago anyway when I last looked at it; maybe the spec has improved since then?"

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

    Но, когда в 2015-ом году появился некий анон с предложением все починить и даже какими-то наработками, автор ему сказал, что иди сука гоняй тесты (видимо, руками, потому что CI настроить он тоже не смог) на всех платформах, а то, вишь, "the old "I'll do the fun bits and let others do the boring bits" strategy. Good luck with that."

    Короч чуваки ещё немного поспорили с этим аутистом, после чего съебались в туман, а тулза так кириллицу и не поддерживает.

    Смешно и грустно.

    Desktop, 05 Мая 2020

    Комментарии (49)
  7. Куча / Говнокод #26629

    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
    import sequtils
    
    when not declared(unzip):
      proc unzip*[S, T](s: openArray[(S, T)]): (seq[S], seq[T]) =
        result[0] = newSeq[S](s.len)
        result[1] = newSeq[T](s.len)
        for i in 0..<s.len:
          result[0][i] = s[i][0]
          result[1][i] = s[i][1]
    
    let a = @[('a', 1), ('b', 2), ('c', 3)]
    let b = unzip(a) # version 1.0 will use the proc declared above
                     # version 1.2 will use sequtils' proc
    
    assert b == (@['a', 'b', 'c'], @[1, 2, 3])

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

    Desktop, 01 Мая 2020

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

    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
    import ballerina/auth;
    import ballerina/config;
    import ballerina/http;
    import ballerina/log;
    
    auth:InboundBasicAuthProvider basicAuthProvider = new;
    http:BasicAuthHandler basicAuthHandler = new (basicAuthProvider);
    
    listener http:Listener ep = new (9090, config = {
        auth: {
            authHandlers: [basicAuthHandler]
        },
    
        secureSocket: {
            keyStore: {
                path: config:getAsString("b7a.home") +
                      "/bre/security/ballerinaKeystore.p12",
                password: "ballerina"
            }
        }
    });
    
    @http:ServiceConfig {
        basePath: "/hello",
        auth: {
            scopes: ["scope1"]
        }
    }
    
    service echo on ep {
    
        @http:ResourceConfig {
            methods: ["GET"],
            path: "/sayHello",
            auth: {
                scopes: ["scope2"]
            }
        }
    
        resource function hello(http:Caller caller, http:Request req) {
            error? result = caller->respond("Hello, World!!!");
            if (result is error) {
                log:printError("Error in responding to caller", result);
            }
        }
    }

    Кто что думает про https://ballerina.io?

    Desktop, 19 Апреля 2020

    Комментарии (45)
  9. Swift / Говнокод #26534

    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
    import Foundation
    
    @objc protocol SomethingDoable {
        func doSomething()
    }
    
    class Inner: SomethingDoable {
        @objc func doSomething() {
            print("Inner!")
        }
    }
    
    @objc class Outer: NSObject {
    
        let inner: SomethingDoable = Inner()
    
        override func forwardingTarget(for aSelector: Selector!) -> Any? {
            return inner
        }
    }
    
    let outer = Outer()
    outer.perform(#selector(SomethingDoable.doSomething))

    Удачного дебага!

    Desktop, 27 Марта 2020

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

    +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
    define method display (i :: <integer>)
      do-display-integer(i);
    end;
    
    define method display (s :: <string>)
      do-display-string(s);
    end;
    
    define method display (f :: <float>)
      do-display-float(f);
    end;
    
    define method display (c :: <collection>)
      for (item in c)
        display(item);  // runtime dispatch
      end;
    end;

    В закромах истории нашёлся язык с runtime dispatch/multimethods.

    Desktop, 03 Февраля 2020

    Комментарии (20)
  11. Куча / Говнокод #26011

    0

    1. 1
    2. 2
    3. 3
    https://beautifulracket.com/appendix/thoughts-on-rhombus.html
    http://greghendershott.com/2019/07/future-of-racket.html
    https://github.com/racket/rhombus-brainstorming/blob/master/resources/goals.md

    Авторы Racket планируют в течение нескольких лет выпустить новый диалект языка, в котором, среди прочего, снизить порог вхождения, в том числе, вероятно, избавившись от скобочек™.

    В связи с этим возникает два вопроса:
    1) правда ли они думают, что сложность освоения Racket и lisp-подобных языков в скобочках (а не например в мощной системе макросов, метапрограммирования и возможности написания языков в языке)
    2) переизобретут ли они Dylan спустя три десятка лет

    Desktop, 04 Ноября 2019

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