1. JavaScript / Говнокод #13826

    +153

    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
    $("#ChildrenCount")
                .keyup(function () {
                    var $this = $(this);
    
                    if ($this.val() > maxChild) {
                        $this.val(maxChild);
                    }
                })
                .blur(function () {
                    var $this = $(this);
    
                    if ($this.val().toString().match(/^\d+$/) == null) {
                        for (var i = 0; i < viewModel.children().length; i++) {
                            viewModel.children.remove(i);
                        }
                        $this.val(0);
                    }
                    else if ($this.val() === NaN) {
                        for (var i = 0; i < viewModel.children().length; i++) {
                            viewModel.children.remove(i);
                        }
                        $this.val(0);
                    }
                });

    когда джуниор использует jquery в проекте с knockout

    sladkijBubaleh, 20 Сентября 2013

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

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    <?php
    
    require_once ("db.php");
    
    $region = $_POST["region"];
    
    $array = mysql_query ("SELECT * FROM city WHERE region = '$region'");
    	echo "<option value=\"\">Выберете город</option>";
    while ($m = mysql_fetch_array($array)){
    	echo "<option value=\"".$m["alias"]."\" id=\"".$m["id"]."\">".$m["title"]."</option>";
    }

    Вот такое чудо обрабатывает ajax-запросы в одном из магазинов, что мне приходится допиливать. Святая наивность.

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

    Комментарии (248)
  3. 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)
  4. PHP / Говнокод #13823

    +151

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
            try {
                $mySqlData = $this->apiTransport->call('Data', 'checkByHash', $params, $this->ApiClient->getOptions());
            } catch (\Exception $e) {
                throw new \Exception($e->getMessage());
            }

    Не перестают удивлять

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

    Комментарии (3)
  5. C++ / Говнокод #13820

    +8

    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
    if (dequeueBuffer_) {
        delete dequeueBuffer_;
        dequeueBuffer_ = NULL;
      }
    
      if (enqueueBuffer_) {
        delete enqueueBuffer_;
        enqueueBuffer_ = NULL;
      }
    
      if (readBuff_) {
        delete[] readBuff_;
        readBuff_ = NULL;
      }
    
      if (currentEvent_) {
        delete currentEvent_;
        currentEvent_ = NULL;
      }

    Apache Thrift 0.9.1, made in Facebook
    Код в деструкторе:

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

    Комментарии (28)
  6. Куча / Говнокод #13819

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    function handleSelection(etot, totId) {
       var tot = document.getElementById(totId);
          if (!etot.checked) {
             if (!tot.checked) {
                tot.checked = true;
             }
          }
    }

    тот этот

    basta, 18 Сентября 2013

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

    +107

    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
    public class Visit 
    {
    	public DateTime Start {get; set;}
    	public DateTime Finish {get; set;}
    }
    
    public bool IsConflict(Visit a, Visit b)
    {
    	var s = GetArray(a);
    	var s2 = GetArray(b);
    	return Compare(s,s2);
    }
    
    private List<string> GetArray(Visit visit)
    {
    	var list = new List<string>();
    	while (visit.Start < visit.Finish)
    	{ 
    	  list.Add(visit.Finish.ToString()); // в строках!
    	  visit.Finish -= TimeSpan.FromMinutes(1); // по 1й минуте!!!
    	}
    	return list;
    }
    private bool Compare(List<string> list1, List<string> list2)
    {
    
    	foreach (var s in list1)
    	{
    		if (list2.Any(x => x == s))
    		{
    			return false;
    		}
    	}
    	return true;
    }

    Основная здесь функция, предназначенная для вызова, - IsConflict(Visit a, Visit b)
    Она должна проверять, пересекаются ли меджу собой два промежутка времени.
    Вот такая проверка со сложностью O(n*n) , где n - кол-во минут в промежутках времени.

    kasitan, 18 Сентября 2013

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

    +158

    1. 1
    if ($showwindows*1 == 0) { $content->set('hidden','hidden'); }

    kSM, 18 Сентября 2013

    Комментарии (3)
  9. Java / Говнокод #13808

    +114

    1. 1
    Ranges.closedOpen(0, list.size()).asSet(DiscreteDomains.integers())

    Самый простой известный мне способ сделать аналог питоновского range(len(list)). Даже с Guava.

    someone, 18 Сентября 2013

    Комментарии (30)
  10. PHP / Говнокод #13807

    +161

    1. 1
    2. 2
    3. 3
    4. 4
    foreach (array('peer_id','port','downloaded','uploaded','left') as $x){
        if (!isset($x))
        err('', "Нет переменной - ".$x, 1);
    }

    Озадачился. Куда может пропасть $x?

    AlexP, 18 Сентября 2013

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