1. VisualBasic / Говнокод #23481

    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
    Const strMask="258258258258258258"
    mNumber = Clng(Left(mParam1,2))*100000+Clng(Right(mParam1,5))*10+Clng(mParam2)
    mResStr = Right("000000000"+Cstr(mNumber),9)
    For c=1 To 9
    	mRes1 = Cint(Mid(mResStr, c, 1))
    	mRes2 = Int(Rnd()*10)
    	strPreResult=Cstr(mRes1)+Cstr(mRes2)
    	mCheckSum = mCheckSum+mRes1*Cint(Mid(strMask, (c-1)*2+1, 1))
    	mCheckSum = mCheckSum+mRes2*Cint(Mid(strMask, (c)*2, 1))
    	Print strPreResult, mCheckSum
    	strResult=strResult+strPreResult
    Next c
    strResult = Left(strResult,9)+Right("00"+Cstr((mCheckSum Mod 95)Mod 100),2)+Right(strResult,8)

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

    lsd, 03 Ноября 2017

    Комментарии (101)
  2. PHP / Говнокод #23479

    +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
    $probabilities=array();
    $get_items=mysql_query("SELECT * FROM `items` WHERE `iid` IN(".mysql_real_escape_string($case['items']).") AND `status`='1' AND `count`>'0' ORDER BY `probability` DESC;");
    while($item=mysql_fetch_assoc($get_items)){
    $probabilities[$item['probability']]=0;
    }
    $dices=$probabilities;
    for($pi=100;$pi>=0;$pi--){
    foreach($probabilities as $probability=>$pstate){
    if(rand(1, 2)==2){
    if($pi<=$probability){
    $dices[$probability]=$dices[$probability]+1;
    }
    }	
    }
    }
    arsort($dices, SORT_NUMERIC);
    $probability=reset(array_keys($dices));
    $get_prize=mysql_query("SELECT * FROM `items` WHERE `iid` IN(".mysql_real_escape_string($case['items']).") AND `status`='1' AND `count`>'0' AND `probability`='".$probability."' ORDER BY RAND() LIMIT 1;");

    Написал с нуля на заказ движок для очередного детского говноказино (розыгрыш пикселей для игр в "Steam").
    Заказчик умолял сделать возможность управления вероятностью выпадения того или иного предмета (в процентах), что я и сделал. Вышеприведённый алгоритм как раз отвечает за выбор приза в соответствии с прописанными в настройках вероятностями. Сейчас кажется, что решение не самое "изящное".
    Есть, что заметить по поводу алгоритма?

    AnalPerOral, 02 Ноября 2017

    Комментарии (79)
  3. PHP / Говнокод #23478

    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
    if(@isset($_GET['id'])){
    $myconns=@mysql_connect(\"127.0.0.1\",\"user_noprivs\",\"unbr34k4bё3!\") or
    die(\"sorry can't connect\");
    @mysql_select_db(\"cms\") or die(\"sorry can't select DB\");
    $sql_query = @mysql_query(
    \"select content from content_table where id=\".$_GET['id']) or die(\"Sorry
    wrong
    SQL Query\");
    // oops SQL Injection-^
    while($tmp = @mysql_fetch_row($sql_query))
    echo $tmp[0]; //echoes the result as HTML code
    }else{
    echo \"Welcome to My Bank
    \".Login.\"\";
    }

    Оригинал: ru.wikipedia.org/wiki/SiXSS

    Оригинал оригинала: securitylab.ru/analytics/216380.php?el_id=216380&VOTE_ID=104&view _result=Y

    Смысл не в смысле кода, а в том, как можно было вообще умудрится так скопировать текст, что бы везде было экранирование

    d_fomenok, 02 Ноября 2017

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

    −7

    1. 1
    Про убогость ООП подхода.

    Итак, вот допустим наследование. Есть всякие там тупые примеры ООП, типа "котик и собачка наследуется от четырехногих" и проч., где подобный бред вполне работает. Но давайте попробуем рассмотреть более интересные ситуации.

    Допустим что мы пишем некую игру. В игре есть некое оружие, например там есть огнестрел и дубинки. И мы делаем ружье, которое одновременно и огнестрел и дубинка, т.е. ружьем можно и как палкой уебать, и пальнуть как из револьвера. У родительского класса "огнестрел" есть свойства, типа дальности выстрела, точности, используемых боеприпасов, уровень прочности(износ), вес, наносимый урон при попадании. У дубинки есть свойства длины дубинки, уровень прочности(износ), вес, наносимый урон при ударе. Вес для ружья нам нужен только один, т.е. нет смысла делать два "веса" одному предмету. И огнестрел и дубинка наследуется от родительского класса "объект инвентаря", в общем тут ромбовидное наследование, которое в разных языках решается разными способами. Ну ок, допустим что мы там каким-то образом указали компилятору некоего языка X, что наследовать свойство "вес" надо лишь один единственный раз, как и прочие хрени, которые являются общими для родительского класса "объект инвентаря". Теперь надо решить с прочностью. Не все "объекты инвентаря" в этой игре имеют свойство прочности, есть например какие-то расходные материалы, типа патронов, для которых понятие прочности неприменимо. Использование ружья как дубинки изнашивает его не таким же самым образом, как использование ружья как огнестрела, но при этом слишком большой износ ружья-как-дубинки может настолько повредить его, что как огнестрел его уже и не поиспользовать из-за погнутого ствола. Но использование ружья как огнестрел никак на износ ружья-как-дубинки не влияет, типа это механический износ спускового механизма, износ ствола при стрельбе...

    j123123, 02 Ноября 2017

    Комментарии (255)
  5. Python / Говнокод #23476

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    if cur == 'EUR':
            alldata['total'] = alldata['total'] * Decimal(58)
            alldata['cost'] = alldata['cost'] * Decimal(58)
        elif cur == 'USD':
            alldata['total'] = alldata['total'] * Decimal(62)
            alldata['cost'] = alldata['cost'] * Decimal(62)
        elif cur == 'GBP':
            alldata['total'] = alldata['total'] * Decimal(71)
            alldata['cost'] = alldata['cost'] * Decimal(71)
        elif cur == 'UAH':
            alldata['total'] = alldata['total'] * Decimal(2)
            alldata['cost'] = alldata['cost'] * Decimal(2)

    Простой конвертер валют своими руками!
    💩-💩 и в продакшен!!!

    farmspam, 02 Ноября 2017

    Комментарии (10)
  6. JavaScript / Говнокод #23475

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public do(action: 'un' | 're'): void {
        const result = (<any>this._appApi.app.documentManager.current)[action + 'do']();
        if (!result.success) this._toastService.error(result.errorMessage, `Ошибка ${action}do`);
    }
    
     <button (click)="do('un')" title="Отменить"><i class="material-icons md-36">undo</i></button>
     <button (click)="do('re')" title="Повторить"><i class="material-icons md-36">redo</i></button>

    mazhuravlev, 01 Ноября 2017

    Комментарии (51)
  7. bash / Говнокод #23474

    +1

    1. 1
    Кегдан вернулся, давайте радоваться вместе!

    d_fomenok, 01 Ноября 2017

    Комментарии (3)
  8. Ruby / Говнокод #23473

    −1

    1. 1
    2. 2
    3. 3
    def self
      self
    end

    irb(main):002:0> self
    => main
    irb(main):003:0> self.self
    => main
    irb(main):004:0> # уииииииииииииииииииииииииииииииии
    irb(main):005:0* self.self.self.self.self.self.self.self.self.self.self.self.self.self.self.self.self
    => main

    Stallman, 01 Ноября 2017

    Комментарии (9)
  9. C# / Говнокод #23471

    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
    internal class Log
    	{
    		public static void WriteLine(string methodName, UpdateFile file, Exception e, LogType type = LogType.Success)
    		{
    			using (FileStream fileStream = new FileStream(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\patch.log", FileMode.OpenOrCreate))
    			{
    				using (StreamReader streamReader = new StreamReader(fileStream))
    				{
    					using (StreamWriter streamWriter = new StreamWriter(fileStream))
    					{
    						streamWriter.WriteLine(string.Format("Launcher | {0} | {1} | {2} | {3} | {4}", new object[]
    						{
    							type,
    							methodName,
    							file.FullPath,
    							e,
    							DateTime.Now
    						}), streamReader.ReadToEnd().Length);
    					}
    				}
    			}
    		}
    
    ...

    Как получить размер файла? Правильно, надо прочитать его в память и взять размер данных из памяти :facepalm:
    Зачем получать размер файла, даже не спрашивайте ))

    Источник: hxxp://promo.riseofrunes.com/InstLauncher.zip (C#, декомпилятор).

    luxtau, 31 Октября 2017

    Комментарии (16)
  10. C++ / Говнокод #23470

    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
    void DevToolsHttpHandler::OnJsonRequest(
        int connection_id,
        const net::HttpServerRequestInfo& info) {
      // Trim /json
      std::string path = info.path.substr(5);
    
      // Trim fragment and query
      std::string query;
      size_t query_pos = path.find("?");
      if (query_pos != std::string::npos) {
        query = path.substr(query_pos + 1);
        path = path.substr(0, query_pos);
      }
    
      size_t fragment_pos = path.find("#");
      if (fragment_pos != std::string::npos)
        path = path.substr(0, fragment_pos);
    
      std::string command;
      std::string target_id;
      if (!ParseJsonPath(path, &command, &target_id)) {
        SendJson(connection_id,
                 net::HTTP_NOT_FOUND,
                 NULL,
                 "Malformed query: " + info.path);
        return;
      }
      ...
      100500 строк типичного ЦПП бреда
    }

    https://cs.chromium.org/chromium/src/content/browser/devtools/devtools_http_handler.cc?l=487


    Суровые разработчики гуглобраузера настолько суровы, что УРЛ парсят вручную, не используя утилитные функции.

    А вообще, в коде который относится к инструментам разработчика в гуглобраузере все прекрасно, чего стоит только вот это говно:
    https://cs.chromium.org/chromium/src/third_party/WebKit/Source/devtools/scripts/build/generate_protocol_externs.py

    wvxvw, 31 Октября 2017

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