1. Лучший говнокод

    В номинации:
    За время:
  2. PHP / Говнокод #23160

    +2

    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
    $value = $grandTotal  - $tax;
            $total_name = $this->__('Grandtotal_excl_tax')." (".$this->__('excl. tax').")";
            $row = '<div class="columns xsmall-6 small-6">';
            $row .= $total_name;
            $row .= '</div><div class="columns xsmall-6 small-6 align-right">'.$this->helper('checkout')->formatPrice($value).'</div>';
    
            $totals["grand_total_excl_tax"] = $row;
    
    
            //$orderedTotals = Mage::getStoreConfig('onestepcheckout/general/summary_totals');
            $orderedTotals =  "subtotal,aw_giftcard_duty,aw_giftcard_duty_discount,shipping,cashondelivery,shipping_discount,discount,aw_giftcard,grand_total_excl_tax,tax,grand_total";
            $orderedTotals = explode(',', $orderedTotals);
            foreach($orderedTotals as $total) {
                $total = trim($total);
                if (isset($totals[$total])) {
                    echo $totals[$total];
                }
            }
            ?>
        </div>

    Разгребаем проект на Magento доставшийся в наследство. Умеете ли вы готовить Array() так как готовят его в строках 11-12 ?

    #littleitaly

    mrdink, 06 Июля 2017

    Комментарии (1)
  3. Python / Говнокод #23159

    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
    # returns yesterday reports
        def get_yesterday_reports(self):
            pass
    
        def get_waterfall_sources(self, wf_id, active_only=False):
            # TODO: check if meta property is equal to the number of items in the array
            # return test.mock_waterfall_sources.get_sources()
            status = '1' if active_only else urllib.quote('0,1')  # '0%2C1&'
            self.get_auth_token()
            encoded = urllib.urlencode({'authorization': self.token})
            url = BASE_URL + "/waterfall-ad-sources?advertiser=&itemsPerPage=9999&name=&page=1&sortAsc=true&sortBy=tier&status={}&tier=&waterfall={}&{}" \
                .format(status, wf_id, encoded)
    
            retries = 1
            while retries <= 3:
                response = requests.get(url)
                if response.status_code == 200:
                    break
                else:
                    logging.error('Failed GET request to StreamRail, status code {}, {} retries'
                                  .format(response.status_code, retries))
                retries += 1
    
            assert response.status_code == 200
            try:
                data = simplejson.loads(response.content)
                waterfall_sources = data['waterfallAdSources']
                assert int(data['meta']['total']) == len(waterfall_sources)
                return waterfall_sources
            except:
                logging.exception("Could not load ad sources for waterfall {} from StreamRail:\n"
                                  "{}".format(wf_id, response.headers))
                raise

    Хотя, с другой стороны, все эти рекламораспространители так выглядят. Но тут просто кучно так получилось.

    wvxvw, 06 Июля 2017

    Комментарии (1)
  4. Python / Говнокод #23145

    +2

    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
    if hasattr(query, "items"):
            query = query.items()
        else:
            # It's a bother at times that strings and string-like objects are
            # sequences.
            try:
                # non-sequence items should not work with len()
                # non-empty strings will fail this
                if len(query) and not isinstance(query[0], tuple):
                    raise TypeError
                # Zero-length sequences of all types will get here and succeed,
                # but that's a minor nit.  Since the original implementation
                # allowed empty dicts that type of behavior probably should be
                # preserved for consistency
            except TypeError:
                ty, va, tb = sys.exc_info()
                raise TypeError("not a valid non-string sequence "
                                "or mapping object").with_traceback(tb)

    https://github.com/python/cpython/blob/master/Lib/urllib/parse.py#L848

    Зачем генерировать TypeError, а потом ее ловить и снова кидать?

    Admina_mamu_ebal, 23 Июня 2017

    Комментарии (1)
  5. PHP / Говнокод #23128

    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
    /* Регистрация */
    	public function register ($log, $pass, $pass2, $email) {
    		/* Стандартная проверка */
    			if(isset($_SESSION['userid'])) return "already_auth";
    			if(!preg_match("/^[a-zA-Z0-9]+$/", $log)) return "rus_or_eng";
    			if(strlen($log) < 5 or strlen($log) > 31) return "log_min_5";
    			if($pass != $pass2) return "pass1_not_equal_pass2";
    			if(strlen($pass) < 8 or strlen($pass) > 31) return "pass_min_8";
    		/* Генерация хэша */
    			$hash = md5('davay'.rand().'ebatsa');
    		/* Проверка на существование ника */
    			$q = $this->db->row("SELECT * FROM `users` WHERE `user` = '".$this->sql($log)."'");
    			if($q != null) return "change_nick";
    		/* Занос в базу данных нового пользователя */
    			$q = $this->db->query("INSERT INTO `users` (`user`, `password`, `hash`) VALUES (:login, :password, :hash)",
    				array("login" => $log, "password" => $pass, "hash" => $hash));
    		/* Возвращаем положительный ответ */
    			return true;
    	}

    Хэш не трогал)

    enly1, 14 Июня 2017

    Комментарии (1)
  6. PHP / Говнокод #23125

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    /* Функция загрузки модулей */
    	function load ($name, $path, $cfg = array()) {
    		require($path.'/'.$name.'.php');
    		if($cfg !== null) {
    			return new $name($cfg);
    		} else {
    			return new $name;
    		}
    	}

    Хмм, что-то тут не так.

    enly1, 14 Июня 2017

    Комментарии (1)
  7. C# / Говнокод #23109

    −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
    protected void ASPxUploadControl1_FilesUploadComplete(object sender, DevExpress.Web.ASPxUploadControl.FilesUploadCompleteEventArgs e)
            {
                if (Request.Cookies["LID"] != null)
                {
                    int ListId = Convert.ToInt32(Request.Cookies["LID"].Value);
                    Response.Cookies["LID"].Expires = DateTime.Now.AddDays(-1);
                    foreach (DevExpress.Web.ASPxUploadControl.UploadedFile uf in ASPxUploadControl1.UploadedFiles)
                    {
                        uf.SaveAs(@"C:\TEMP\ListUploads\" + uf.FileName, true);
                        ListInfo.ImportList(Convert.ToInt16(ListId), @"C:\TEMP\ListUploads\" + uf.FileName);
                    }
                }
            }

    блять, это же каким инвалидом надо быть, чтобы так сделать загрузку файла в базу?

    Lokich, 06 Июня 2017

    Комментарии (1)
  8. SQL / Говнокод #23088

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if @SubDepartmentID = 0 set @SubDepartmentID = null
    if @QuoteID = 0 set @QuoteID = null
    if @PartnerID = 0 set @PartnerID = null
    if @QuoteID = 0 set @QuoteID = null
    if @SubDepartmentID = 0 set @SubDepartmentID = null

    это кусок хранимой процедуры

    mrvlmor, 31 Мая 2017

    Комментарии (1)
  9. JavaScript / Говнокод #23087

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    // eval both the numbers to remove quotes
        // otherwise 4 + 5 will be "4" + "5" which in JS will equal 45
                evalDisplay = eval(displayNum),
                evalStored = eval(storedNum);

    Гениальный способ получить число из строки (вместо evalDisplay = +evalDisplay)

    DiphenylOxalate, 30 Мая 2017

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

    −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
    dHA2aElMSFRWMXhQSlVJRUFvSWdHcXlsSG40anlrWko0eG5BMHl5R2lKUUp0CnV4WEVaYU5WNEtZ
    YWVJSWJMbHNXZVlqOHE4QWp6RzVnNWJJS040aklFVjJjdEVFT2k1dDhiRnY5WHZka3c2cjUKbTNK
    TlA5Q2pYU3J1b0hPTE1FTjNrMXNrWURnQXF0VnJCS2FMWmY0dkQ5NzVPQTliYkJTM284ajgyVSt2
    RkdaawppVkUyUkhXbDZOUVUrZFlSOElmN0Z3MXM3MHZYRHpyY0VQNnZFdTVpTW5uK1pXTjZBcW00
    MzBqdDM4STZPWnpICmwvQkNYb3g1NGxsTXdDSVZkV05uTk05QmdaOEJpTEtEYnorNlB0YWN5dFJO
    UEZpNmE1c0xHL1hHUG9oV2xNWGQKQnlVRk1PK0tkYk5pOGFYRHpGczJpM3FpalJsM01wc1lIUzht
    eXAzK3hOeXVRanpvOEFjOEJPQnBmc0ZTNkFJOApTckk4Ujc0NGI2MTVqRFdsS2JrS1dLMzhpZDJD
    aHZBNG4rQWs1ekN5aU03QXp1RG1BbnJuUVNMNzNQdk5PaGFyCkZidEJ1ajliNTg0eTFJbmF4b2tH
    VHMzVlU2QklRZ21jZ2pjNytSSko2dkF4RGp0TjJXbXYzOVFWQ3o5Q0o0Y0MKdlNGUTZFSjVnVGd2
    SkgyN3JHR0xEZTAyOHZJK3pGeDhURkhFdk9tNXZibEE4Q29ERk5xNlFYcDNjZ0VJb2N1SgpQS0hP
    UEpwUGNKOEtqQkpTem1iRDFzZytSNERFaTJncDF6K2VRWTJWaXZJaW15bnJNb0dYUXRxaDU4czVF
    L1JjCmFNbXpybXFta0IwalRwTkxqdkpKOG5lQ2l6ZXJCY1g4RDU4Q3poZ3kvVmJRT1c0WXZwaEtv
    Y1pjNXpHR0RKWksKUk0yd1g4eWpITm5LN2gvWi9IUklxbXNDZGJqSzRGNUxrTTQvZXpja2JsYkVy
    Y1dVem1rbmorZXlmV0lpVzdTaQpXbTB4WUtVSkRFR1o4V2ZsVFUrYmMzSFNjMGZKbjdvdlZDZld1
    ZS9vMVlpQzZ4WHhqUXBON1Z0K0JiOFJ0NHNvCmhyeStVY29RWktZZE9wK3dxNWxOdEJ2Z0JmQ3RO
    WHBGSGkyWlQ4WEYvRnRUMWxxd0ozaGdreEVGNjNjRmhESWUKdXAyNXdwN2gyTzFaaDh1V0tnNkhV
    U3VFWTdUdnZpdmRPRFI3RnAreXlmS0h5TlduTmptSHhvK25ZaUhpaGVyVgpDNURoMVprMXo4cUtv
    bVZvN2JmMGtMQmh6UzZhQXhYTGcvWmtjOVE4bW5pSGh3K0lmQUo0OFJ5SENxZHpQZ1RVCjFxVkJz
    UzRGTWFNZ0JjbGl0SFExVXZVUW5remJpTU1OcG5ybkpmYnhJZzlTTjZmQmp4OWtkaXkxTFNYbUdF
    cG4KaC9xVEl2cU9NK1BpWjN4UHVzTzdyTlZucVJwbWxNemNEcHFzand0dy82VmNXWXdlc2RrMUlN
    aXQzZ0wzd01jVgo2NlByWGcrR2FjaS9vcDFBZmZDNHUzZkcrMDIwSEdsZ21vWWhpdTFNd0FiS3Zt
    TFFSUFh4YWdJOUs2RGhDazErCnRyc0hzbkd4azM2ZTZ4TFVEK1hVL2lNbjhqOXM4bXhUTm1aU3NZ
    K2VaZzBENGNlcWZqODhUWXpzZkNROWpzMkYKdmRUSVRKcEdudkRKSjZqajVkTXBPcmp1WGYrdnRx
    MmlsMGNXTkZiN0YzWHVaa0RHK09rVHZWaGc1QlRnR2hjRApJcm1kUEdxMDNjdEd0K3A2ckR3Z29Z
    SWx5VWdBbGh0REkrYlhlV1J0bHBJU0M1YjdOaUxOMzFLb2ZLbCtVZllmCmcxaFN2MU9oWTJXL24w
    TTRXSUkvL0k2UkF1NnViNFBnRzlRQVk5bkxFaWVZNlpuTWR1c1F1UWJLM3pTYkFnTzkKM0JRemtx
    bzlRaXlXRXkyeFZXRzJjNS9aTmpPQmJRMGYvcCszRDViMDMySVQ0Wnd5RU9ZUDBvNm5NR2xUeHlY
    dApPSmU5SmJUdHUyWkxFZlRLTXhQa1NhSWRUQmhoR2hsTnRkaWUrSEpvRllGMnl4MnYwMCtyb0ZL
    c0p4UC91SUExCmdCYStLQ3VCQVRuRUtzbjdBdGFZY3J1Tml4SlBBTlhnakhFb1FyZ1FHS2doQllB
    K0ZQeDNaSjJlZ1VzRnBFWlgKUlVIZUh5aEl3RDFWQWRYZW5LVzFpOWIwQnpwNnkvZXRocWQ5NHpL
    bEpxUGcwcjI0dGRmMDRaYzN1Z0FsaWxsYwpieGhiZVljRFJxQUxaazlIZmpPK2g0eEZGeVIxcXAr
    T0ZIYUVjeUphL1V5Qm9OUDdreDZDQ3AvbkNTWFJiaHRCCmFnRHpwMStrVXQ4ZVloSHVGWTNKMTVM
    N1hRUGVWcXI5ODRIbDZZZ0VUUURpN0pVNSsxL1hJbEVjY1hnZlc1R0kKTU5PYnZsNDF6YTRMSUN1
    ZjUrWkE1NmhvL2FadDc0VjVFdEhmZzV3cEFZUHpEOFM2VEw5NUxWWitJTWZnVFl1TgppVzB2RXNV
    aHNkTGJQeXQxNHQrMkdGK2pUdEhFM3lmSEZqdFZ3WlFxWFlLblk5UGpLU20wbERHNnFITnVnTmF1
    CjZ1cEhCYkNwSkhHQmF1Z2JkMEFwaDl3VzRSbmVNdnFUazcxNk9xR1R6WDc2U3BWbW0vMzZPVTZZ
    dnI1TDViK0MKUjhxcWtkc05KRDNoVUhyei9aWVk5LzBaUnFsVDAvNDFvVys0NU51MUgwN3dwRTZl
    ZWxPbDE3dksyNjFXald4SwpXdXl2dXpqMk1nWCt0Rk5LWk1DazNQOU9PV1ZlZmhJWU03bU5EVEZH
    c0xuSHJzNUt3bzF0dWczQXJaSDlIVFNDCkd2U0VXTUhEMC8vWHpUT2hJbitSK3Q0RWJmazRCUFBX
    QWx0aTVEWHRHbllMYzdONGVpQ213RWhtMUdKaThwSHoKOUk3R2UyN3JQY3hEOXhuSGtONy94MmFo
    bkZOTFFsTVdGNzVwVW0xbDQ0UDl2eERpdlVPbGtQWHNtOFZlbTVrdgpDdzNuSy9RWEtNL01Rb0dL
    L0o1ZHJqclNoV1NHRjJZdXRvL3ArZWY5Qy9yUG4rVURtY0JQeUhjKzhZZWY0NVdaCmRmWWZtdUlD
    UFF1MUNoNE5XSUk4WFR5OFpxNWp3eG5oY1FYRWFPNzA4VHlSOG5NdzF2VDlVVVdiUWpINjY0dUIK
    T2VUeUR2TDlwYi9uS0lULzQ5bXZ2OTJIbXF5RFZDbDg2SFBzZ05nZ29LZ21CcUZybHFyUW1jRzNo
    bTdmRUhYagpxUUdEbk5zRjg3dWRXZ2lSOVhiZ0lxYnlOejliYUR3Qm5nQVJzbG1NbWtneVlWMlFm
    KzNaMGZMTHdCanp6blBxCkNSWVlUbHAvVGg2bVFiUjRKNXk3VnI2UTZOQ29PNFUySlRRNWNGZHlG
    TzY2VUNQeFljbWFJTVlDc1hxOU83YmwKVFFFcmllMUZnNTVWOUkxek9VdWp4bGpOdDVCV2RoUnpr
    Y0RZNGtkTjg2SEdVQ21qZEwrRy9OYkhGSFg2ajZoVApHSGdSOVZxTnZrQlBSUjcwbWk0Y202ZVFN
    Z0dlVy9lWHhhdHpBRFdMMUVoTTZDS3F2eEUrVCtac1h5VEN6aDNhClJBcFVnWHZkRFlSRjRSZC9Z
    WU84eFRCZjBpWS8vWU5CNGsyV0ZJeVN0clRrOEtPYUhQeVBUWUtkR1QzSm9VdWoKQjVlVkpFN3Rh
    cjk2UTdQNGZmbzdqY2UxUW1LK041NEw2WGhhVWdPbEF4K0UyVmxKMXVQY1BUd1ZOc3FFeXJybgpP
    OUFkNHVxdE5DSWRaa0V3dVJ3T0tBVzVudnRlaHFRbWNlTnk0RE9seXN4T1V4YmpMWVI1MnZlcWdP
    bGF4dWxxCk1iVEF6RnhFSm1UMFF1dEpFTEMwQ0kzMTZ1WnFickpDcG5DdUVINEY4VU5POUtSNnJ0
    NDRURDd1cmtWR3JPM3gKSkFZR0t0dlY5ZXRacW9nN25aMlBtNENCaWRCQnBGOW5IWmp4akdHamsy
    MCsyL3NTZlRLS0ZQU2VYNDFvL3BwRQphWmVDd1h3bloxeURJbXZmR0VCVHhUcEo1b01BTkNzMCtn
    MzFzOFAzOEZGVXk4Ky80Tmowc08reXpjdnAyR3ZqCmFVbmx3TC9wU2owMlA4Y2RvL1cxTFZnRVE4
    TWlUNVBvTjRUZW9Dbld1bFQ3TUx4dVNESDh1TkhnQlpSRmZZVDEKd2tNTkJqcWk2bnZDRHU3d1Vn
    aEJVWEZYWmljOHFjTHlnbXMyL2pPeG5XRFovRnNFS2ZpaEw3Y2xNSmMwMG5IbwpWOE1vMDRON3Z1
    ZGloaGNBa2tDMkV6RmpmZHUxVCtZa0Z4VXh2VWZHZzJqYTFGUUptT0ZzYlFidHJ4NWd3V3FLClcv
    amVkdVVYVi9oODRYZzhBQjdheTcwbnBNOE5xRkxodVF3em9uUmV6dG51Yytxa2k4QUJLTXA3VnpG
    R29XVHAKd3VJdUdDald4NDIzNEpQNUplK3BXMEl2NGlNWWlFZWgyYVFCci9VbGVUOTBna0ZCbENJ
    ODBJbnI4TnQxR0x6eAppalBHNjA0YThkSjZzOGo4V3MweWtQNEE1MStHaDVwMDEwV1JoWk5ZR1RQ
    Yml6azViUXB1cHAvMVY3THkzL3RuClorQitPZ0R4NERzR0xHQ1BVZWE3MnNaM3BzWkV4Z3gzQlRz
    RzFyYVkxZTZ1VjdaaXFiaFVIcGtGdDFJSUZXNkwKeldmVkxoU3JaWngwTTNuQUZ3NmcvcWsrZU14
    STgxMTBFb3hiQVVadjZVc2ZraTY2RWZwV1ZoZjAwclJKMjFGcAo4c1F3K3JRNlRiTitPVnhiOUxN
    eVFZZWwwMG9QM1ZaVXZoUVZSN2EwbTFzYk53R1dBVDkzTGJseTYxcHBJVldzCmx6RG1pRWJCckJO
    NWJCdGhaYmRjY0F4aFNHWDBRNTIreVpLY3d5azZvQXZzTXNHdk1BNCtxS2FxUERzSlZsNUoKS0la
    dFZFd3RMcklqUDFlTFhtZ1JZam4zTURCcmkySFVTZGR6RXdWZm1keDVEd04vQ0hvempIb3F4SWxZ
    SDhBTgo1VHRYTXNBSHdMaUduR3lzQk1haU9nSFNHcWljVWlHQXI2ejR6QW1HSzc2Z2xNbHJsM3d3
    c3JHb3pZZml0amVVCndmQ1E4L0tiM3ppbVlGWGwvSG1qK3lLVVNpaHg2WENKWGlxL1U3UnNHcmNJ
    d0lvdVlxa2pFR0lWbVYvUWRhWFkKeTRWTVM5cjd3VThEOE5CK3F1RlEvNGZiNXJIUStQeGNDMDIz
    NWJCek54dHhsTlQ5VVloc0V5bFQ0clVVc3pEdgpQR3NGYzRLVFFnRXFaalE1eVBwUWx5b1pldXJj
    b29JcVdOb3FtdFk2MDFCU2p0VUc2Wlo1M2NIa3d1aWdDb3NiCm96Q3JhVU5UTVlpaGpnOGk0bmtB
    bE5sTzJLUDVWdCtQemtGNXVyM0tCdkRUNHc2OHN1WDBzaG1pNC9tNWI0V3EKc3Boa0FTYlkxVlg4
    Zk51SkswSktNZ3puZHNTeEMzd01FV1VEaDNNcDJrUU55WkxWbVZDTEY1WjZnTmI3OGRJagpBSzJK
    ZVhLakI0SFdLN3dVejBuUklIQzhQTjJVZ1B5ZXRaM2l0R1VZVVBVM21TM01SdDdwVlJyVUx6SnpP

    Lis, 30 Мая 2017

    Комментарии (1)
  11. Ruby / Говнокод #23078

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    def self.allowed_symbols
      @allowed_symbols ||= (('A'..'Z').to_a + (0..9).to_a).shuffle
    end
    
    def self.forbidden_symbols_regexp
      @allowed_symbols_regexp ||= Regexp.new("[^#{allowed_symbols.join}]")
    end

    Проверка формата промокода

    atipugin, 29 Мая 2017

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