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

    Всего: 12

  2. SQL / Говнокод #21630

    −46

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    /* где-то на 4м уровне подзапросов из подзапросов нашёл такое:  */
    ( 
    	SELECT 1 AS num , .... 120 строк логики на case/when/then ....
    	FROM tablea a 
                   WHERE a.id = @id /*  70млн, есть индекс по id, не уникальный */
    ) AS tbl1 
     LEFT JOIN ( 
    	SELECT 1 AS num , еще чуть-чуть case/when/then
    		FROM tableb b 
    		WHERE b.reference = @value /* 80млн, есть индекс но половина записей - пустые строки. */ ) AS tbl2
    	ON tbl1.num = tbl2.num

    left join по константам.

    bliznezz, 02 Ноября 2016

    Комментарии (2)
  3. SQL / Говнокод #18465

    −160

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    select 
    case 
      when count(*) > 0 then '1' 
      else '0' end 
    as "T"  
    from sometable   where searchcode = 'value'

    EXISTS? не, не слышал

    bliznezz, 10 Июля 2015

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

    −177

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    select top 67 DT, ID, SMTYPE, MSGSUBJ, PRIORITY     
    from MES where ST = 'n' 
    union all 
    select top 33 DT, ID, SMTYPE, MSGSUBJ, PRIORITY     
    from MES where ST = 'e'

    Не буду говорить что тут говнокод, но понять разработчика, зачем надо брать не более 67 записей с ST = 'n' и не более 33 с ST = 'e' не знаю, точнее именно в одном запросе вот так разделять и ограничивать.
    Похоже это был такой составной select top 100.

    bliznezz, 09 Декабря 2014

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

    −865

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    select
                    'select'+
                    ' ''update BigTable'+
                      ' set SomeFlag=''''U'''','+
                            'ARCHIVE_ID=''''''+OPERATIVE_ID+'''''''+
                      ' where ID='''''+ID+''''''+
                      ' '''+
                    ' from AnotherTable'+
                    ' where OPERATIVE_ID='''+ARCHIVE_ID+''''+
                    ' and SUMMA='+convert(varchar,AMOUNT)+''+
                    ' and FILLING='''+COMMENT+''''
    from BigTable

    bliznezz, 21 Октября 2014

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

    −122

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Select 
    	min(convert(char(10), DatField, 102)) as DatField,  
    	min('ConstantForMe') as type, 
    	f1
    From sometable
    Where /*условия*/
    Group By f1

    Люблю я агрегаты,
    Любовью к ним пылаю неземною.
    Неявные форматы -
    И что хотите делайте со мною!
    Для вас это - ерунда,
    Подумаешь convert!
    Но вы возьмите дату,
    Но текстового формата,
    Десяток первых цифер,
    Смешайте всё с константой,
    И группируйте с ней.

    Поймёте вы всем сердцем -
    Какое это чудо,
    Потом вам станет худо,
    Но это уж потом.

    bliznezz, 16 Сентября 2014

    Комментарии (2)
  7. SQL / Говнокод #16070

    −167

    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
    insert into #rez
     select  ('<html>')
      Union all
     select  ('<head>')
      Union all
     select  ('<meta http-equiv="content-type" content="text/html; charset=Windows-1251">')
      Union all
     select  ('<title> Report </title>')
      Union all
     select  ('<style type="text/css">')
      Union all
     select  ('.{font-family:Arial;font-size:7pt;}')
      Union all
     select  ('#top{border-top-style:solid;border-width:1;}')
      Union all
     select  ('.titl{font-size:15px;}')
      Union all
     select  ('.title{background-color:rgb(240,240,240)}')
      Union all
     select  ('.data{background-color:rgb(248,248,248)}')
      Union all
     select  ('.nam{background-color:rgb(245,245,245)}')
      Union all
     select  ('</style>')
      union all
     select  ('</head>')
      union all
     select  ('<body>')
     UNION ALL
     select  '<P align=left><SPAN style="FONT-SIZE: 12pt">' + @var1 + '<br><br>'
      union all
    -- ... и еще килобайт 50 подобной фигни. местами с генерацией табличек, с помощью if/case подсвеченных ячеек.

    Спорите FastCGI vs WSGI? Говорите "Логика отдельно, шаблончики отдельно", ORM? Ну-ну. добро пожаловать в Махровый ентепрайз.

    bliznezz, 28 Мая 2014

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

    −166

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    SELECT ...
            FROM users_account
        ....
        WHERE   
            (T.userid=@userid or (@userid=null and @account!=null)) 
            and (T.account=@account or (@userid!=null and @account=null))

    Есть табличка с юзерами и счетами на которых у юзеров есть игровая валюта.
    Есть индекс по обоим этим полям (userid, account).
    Каждый такой запрос сканирует весь индекс,а не делает по ней поиск, чем и грузит субд.
    Но попытки оптимизировать запрос не увечались успехом,
    т.к. я так и не понял что хотел сказать автор в своём условии where.

    bliznezz, 05 Февраля 2014

    Комментарии (40)
  9. SQL / Говнокод #13824

    −160

    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
    create procedure pwqgen @length int =3 
    as 
    /* pwqgen is a t-sql implementation of passwdqc's pwqgen password generator http://www.openwall.com/passwdqc/ */
    /* inspired by https://github.com/iphoting/pwqgen.rb */
    BEGIN 
    create table #separators (id int identity, s char(1))
    insert into #separators 
           select "-" union select "_" union select "+" union select "=" union select "2" union select "3" 
    union select "4" union select "5" union select "6" union select "7" union select "8" union select "9"
    
    declare @maxsep int, @s varchar(1)
    select @maxsep=max(id) from #separators   
    declare @maxid int, @w varchar(30) , @pw varchar(31) 
    select @maxid=max(id) from words  -- =4096
    
    select @w=w from words where id=convert(int,round(rand()*@maxid,0) )
    -- capitalize 1st letter
    if rand() > 0.5 
    	select @w= UPPER(LEFT(@w,1))+SUBSTRING(@w,2,LEN(@w)) 
    set @pw=@w
    set @length = @length-1 
    
    while @length > 0  
    begin 
    	select @s=s from #separators   where id=convert(int,round(rand()*@maxsep,0) )
    	delete from #separators where s=@s
    
    	select @w=w from words where id=convert(int,round(rand()*@maxid,0) )
    	-- capitalize 1st letter
    	if (rand() > 0.5 or @s is null)
    		select @w= UPPER(LEFT(@w,1))+SUBSTRING(@w,2,LEN(@w)) 
    	set @pw=@pw+@s+@w
    set @length = @length -1 
    end 
    
    -- if no one number in @pw - append or replace last letter to random number
    if PATINDEX('%[0-9]%', @pw ) > 0 
    begin 
    	set @s=convert(char(1), 2+convert(int,round(rand()*7,0)) )
    	if len(@pw)<30 set @pw=@pw+@s
    	else 	set @pw=UPPER(RIGHT(@pw,1))+SUBSTRING(@pw,1,LEN(@pw)-1)+@s
    end 
    drop table  #separators 
    print @pw
    END 
    
    -- требует существования таблички со словами
    -- create table words (id int identity , w varchar(7))
    -- 4 тыс слов взял отсюда: https://github.com/iphoting/pwqgen.rb/blob/develop/lib/pwqgen/wordlist.rb

    паролегенератор на tsql.
    при тестах понял что возможна ситуация, когда пароль не имеет ниодной цифры, что запрещено политикой.
    наговнокодил кучу charindex-ов. впринципе то работало, но вспомнил этот сайт, условие переписал под patindex, но треш в ветке с условием if PATINDEX('%[0-9]%', @pw ) > 0 остался.

    bliznezz, 19 Сентября 2013

    Комментарии (5)
  10. SQL / Говнокод #12818

    −167

    1. 1
    2. 2
    3. 3
    update sometable
    set value2=convert(char(100),   @int_variable+convert(int,value2))
    where  someconditions

    В цикле колбасится, упростил для понимания.
    Мне кажется эту штуку изначально проектировал человек, который работал с bash и sqlite, а потом оппа, и нет слабой типизации.

    bliznezz, 28 Марта 2013

    Комментарии (3)
  11. bash / Говнокод #11918

    −117

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    MAXJOBS=20
    for i in `seq 1 $MAXJOBS` ; do nice -n 19 gzip -c /dev/zero > /dev/null & done
    
    while true
    do
     LA=`</proc/loadavg` && LA=${LA// */}
     H=$(date +%M) && H=${H/0/}
     G=`echo "(${MAXJOBS}/2)*(s(2*3.14159*${H}/60) +1 ) <= ${LA}" | bc -l`
     test ${G} -lt 1 && for i in `seq 1 $MAXJOBS` ; do  kill -SIGCONT %$i  ; done  || for i in `seq 1 $MAXJOBS` ; do  kill -SIGSTOP %$i; done
     sleep 1
    done

    Генерирует load average, и поддерживает её в форме синусоиды, с периодом в час.

    на графике выглядит как-то так:
    http://i.piccy.info/i7/108cbdd61801da0ed805ecf41ecbc9e3/4-47-114/35579895/localhost_load.png

    bliznezz, 12 Октября 2012

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