1. Pascal / Говнокод #18060

    +144

    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
    function IsIntStr(const str:string):boolean;                                    // Для проверки, состоит ли логин целиком из цифр.
    var                                                                             // TryStrToInt не подходит.
      p:pchar;
    begin
      result:=false;
      p:=pchar(str);
      if p^=#0 then exit;
      while p^ <> #0 do
      begin
        if not (p^ in ['0'..'9']) then
        exit;
        p:=charnext(p) ;
      end;
      result:=true;
    end;

    Showmessage(IntToStr(4324324233213564)); // а хуйца не желаете?

    Stertor, 24 Апреля 2015

    Комментарии (12)
  2. Pascal / Говнокод #18059

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    FYears.Items.Clear;
          for i := 10 downto 1 do
            FYears.Items.Add(IntToStr(Year - i));
          FYears.Items.Add(IntToStr(Year));
          for i := 1 to 10 do
            FYears.Items.Add(IntToStr(Year + i));

    Заполнение итемов номерами лет
    Сначала добавим 10 лет до даты Х
    Потом дату Х
    Потом 10 лет после даты Х
    RAD Studio XE8 FMX.Calendar.Style.pas

    PeaK, 24 Апреля 2015

    Комментарии (0)
  3. Pascal / Говнокод #18058

    +143

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    if TPlatformServices.Current.SupportsPlatformService(IFMXLocaleService, IInterface(LocaleService)) then
            S := LocaleService.GetLocaleFirstDayOfWeek
          else
            S := '6';
          FFirstDayOfWeekNum := Ord(S.Chars[0]) - Ord('0');
          {$IFDEF MACOS}
          FFirstDayOfWeekNum:= Ord(S.Chars[0]) + Ord('0');
          {$ENDIF}
          {$IFDEF ANDROID}
            FFirstDayOfWeekNum := FFirstDayOfWeekNum - MondayOffset;
          {$ENDIF}

    Это FireMonkey! FMX.Calendar.Style.pas! И это реально работает.
    Главное, что всё очевидно.

    PeaK, 24 Апреля 2015

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

    +141

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public function createAdvertApart () { // ВНИМАНИЕ! Видимость функции protected
    
    // проверяем max размер допустимый к загрузке
    			if ( $_files[size] > 3000000 )
    			$error[] = "Файл превышает размер три мегабайта";

    Прислали вместе с резюме пример кода, а там ...

    kolko91, 24 Апреля 2015

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

    +144

    1. 1
    IntToStr(StrToInt(VarToStr()))

    Сегодня пришла мадам и спросила почему это не работает. Сказали что бы так больше не ...кодила.

    ViktorR, 24 Апреля 2015

    Комментарии (8)
  6. Java / Говнокод #18055

    +144

    1. 1
    Шёл 2015 год, а SQLite на ведре так и не научился сравнивать не ASCII'шные строки без учёта регистра...

    Или это у меня руки из жопы растут?

    bormand, 24 Апреля 2015

    Комментарии (37)
  7. Куча / Говнокод #18054

    +141

    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
    func (db *DB) CountResults(filial []int64, device []int64, workplace []int64, from time.Time, to time.Time, splits bool, skip int64) (res []*AvgResults, err error) {
    
    	var query string
    	var rows *pgx.Rows
    
    	_, err = db.Exec("SET LOCAL TIME ZONE 'Asia/Yekaterinburg';")
    	if err != nil {
    		return nil, err
    	}
    
    	switch {
    	case splits:
    		query = `WITH data AS (SELECT "IndicatorResultValue"."IndicatorId", "qm"."Session"."Blocked", "qm"."Result"."SessionId" AS "SessionId", "qm"."DeviceIPRangeType"."Number" AS "RangeType", "qm"."DeviceIPRangeType"."Id" AS "RangeTypeId", "qm"."BranchWorkPlace"."Id" AS "WorkPlaceId", "DeviceIPRange"."BranchId", date("Datetime") as "Date"
      			FROM qm."Result"
      			LEFT OUTER JOIN "qm"."Device" ON ("Result"."DeviceId" = "Device"."Id")
      			LEFT OUTER JOIN "qm"."BranchWorkPlace" ON ("BranchWorkPlace"."Id" = "Device"."WorkPlaceId")
      			LEFT OUTER JOIN "qm"."Session" ON ("Result"."SessionId" = "Session"."Id")
      			LEFT OUTER JOIN "qm"."IndicatorResultValue" ON ("Result"."IndicatorResultValueId" = "IndicatorResultValue"."Id")
      			LEFT OUTER JOIN "qm"."ResultValue" ON ("IndicatorResultValue"."ResultValueId" = "ResultValue"."Id")
      			LEFT OUTER JOIN "qm"."DeviceIPRangeType" ON ("DeviceIPRangeType"."Id" = "Session"."DeviceIPRangeTypeId")
      			LEFT OUTER JOIN "qm"."DeviceIPRange" ON ("Session"."DeviceIPRangeId" = "DeviceIPRange"."Id") 	
      			FULL OUTER JOIN "queue"."Branches" ON ("DeviceIPRange"."BranchId" = "Branches"."Id" AND (0 = any ($1::int8[]) OR "Branches"."Id" = any($1::int8[])))),
    			data1 AS (SELECT COUNT(DISTINCT(data."SessionId")) AS "Count", 
    	 		"BranchId", 
    	  		CASE WHEN "RangeTypeId" < 3 THEN 0
                	ELSE "RangeTypeId"
    	  		END,  
    	  		"Date"
    	  		FROM data
    	  		WHERE (0 = any($2::int8[]) OR "RangeType" = any($2::int8[]))
    	   		AND (0 = any ($1::int8[]) OR "BranchId" = any($1::int8[]))
    	   		AND (0 = any($3::int8[]) OR "WorkPlaceId" = any($3::int8[]))
    	   		AND "Date" BETWEEN $4::timestamptz AND $5::timestamptz
    	   		AND NOT "Blocked"
    	  		GROUP BY "BranchId", CASE WHEN "RangeTypeId" < 3 THEN 0 ELSE "RangeTypeId" END, "Date"),  
    			data2 AS (SELECT "Id", "Name", date("d") AS "Date" FROM
    			queue."Branches"
    			CROSS JOIN generate_series($4::timestamptz, $5::timestamptz, $6) as "d" 
    			WHERE (0 = any ($1::int8[]) OR "Id" = any($1::int8[])) ),	            
    			data3 AS (SELECT "Count" AS C, 0 AS Avg, data1."Date", data1."RangeTypeId", data1."BranchId"
    			FROM "data1" GROUP BY "data1"."Date", "Count", "data1"."BranchId", "data1"."RangeTypeId"),
    			data3_1 AS (SELECT "qm"."DeviceIPRangeType"."Id" FROM "qm"."DeviceIPRange"
    			RIGHT OUTER JOIN "qm"."DeviceIPRangeType" ON ("qm"."DeviceIPRange"."DeviceIPTypeId" = "qm"."DeviceIPRangeType"."Id")
    			WHERE (0 = any ($1::int8[]) OR "DeviceIPRange"."BranchId" = any($1::int8[]))
    			GROUP BY "qm"."DeviceIPRangeType"."Id"),
    			data4 AS (SELECT "Id", "Name", date("d") AS "Date" FROM
    			"qm"."DeviceIPRangeType"
    			CROSS JOIN generate_series($4::timestamptz, $5::timestamptz, $6) as "d"
    			WHERE "Id" > 2 AND (0 = any($2::int8[]) OR "Number" = any($2::int8[])) AND "Id" IN (SELECT "Id" FROM data3_1)),
    			data5 AS (SELECT coalesce(c, 0) AS C, coalesce(avg, 0) AS Avg, coalesce("data2"."Date", "data3"."Date") AS date, "data2"."Name", "data3"."RangeTypeId" FROM
    			data2
    			FULL OUTER JOIN data3 ON ("data3"."BranchId" = "data2"."Id" AND "data3"."Date" = "data2"."Date"))
    			SELECT array_agg(coalesce(c, 0) ORDER BY coalesce("data5"."date", "data4"."Date")) AS "Count",
           		array_agg(coalesce(avg::double precision, 0::double precision) ORDER BY coalesce("data5"."date", "data4"."Date")) AS "Avg",
           		array_agg(coalesce("data5"."date", "data4"."Date") ORDER BY coalesce("data5"."date", "data4"."Date"))::timestamptz[] AS "Date",
           		coalesce("data5"."Name", "data4"."Name") AS "Name" FROM data5
    			FULL OUTER JOIN data4 ON ("data4"."Id" = "data5"."RangeTypeId" AND "data5"."date" = "data4"."Date")
    			WHERE coalesce("data5"."Name", "data4"."Name") IS NOT NULL
    			GROUP BY coalesce("data5"."Name", "data4"."Name")
    			ORDER BY coalesce("data5"."Name", "data4"."Name")`
    	default:
    		query = `WITH data AS (SELECT "IndicatorResultValue"."IndicatorId", "qm"."Session"."Blocked", "qm"."Result"."SessionId" AS "SessionId", "qm"."DeviceIPRangeType"."Number" AS "RangeType", "qm"."DeviceIPRangeType"."Id" AS "RangeTypeId", "qm"."BranchWorkPlace"."Id" AS "WorkPlaceId", "DeviceIPRange"."BranchId", date("Datetime") as "Date"
    	 		FROM qm."Result"
    	 		LEFT OUTER JOIN "qm"."Device" ON ("Result"."DeviceId" = "Device"."Id")
    	 		LEFT OUTER JOIN "qm"."BranchWorkPlace" ON ("BranchWorkPlace"."Id" = "Device"."WorkPlaceId")
    	 		LEFT OUTER JOIN "qm"."Session" ON ("Result"."SessionId" = "Session"."Id")
    	 		LEFT OUTER JOIN "qm"."IndicatorResultValue" ON ("Result"."IndicatorResultValueId" = "IndicatorResultValue"."Id")
    	 		...

    Код для БД на go

    g2347933, 24 Апреля 2015

    Комментарии (2)
  8. Java / Говнокод #18053

    +141

    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
    public static void main(String[] args)
        {
            int[] array = {1,2,3};
            permure(array, array.length);
        }
    
        private static void permure(int[] arr, int size)
        {
            if(size < 2){
                System.out.println(Arrays.toString(arr));
            }else {
                for(int k = 0; k < size; k++){
                    swap(arr, size - 1, k);
                    permure(arr, size - 1);
                }
            }
    
        }
    
        private static void swap(int[] arr, int index0, int index1)
        {
            int tmp = arr[index0];
            arr[index0] = arr[index1];
            arr[index1] = tmp;
        }

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

    Danneborg, 23 Апреля 2015

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

    +66

    1. 1
    2. 2
    3. 3
    4. 4
    AnimationAnimator* AnimationAnimator::getThis()
    {
        return this;
    }

    Я не знаю что это было, но теперь оно такое. Вызывается из трех мест. Мне страшно :С

    netherwire, 23 Апреля 2015

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

    +143

    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
    _save = (data, callback) ->
      tags = if data.tags then data.tags else []
      removed_tag_ids = if data.removed_tag_ids then data.removed_tag_ids else []
      post = if data.post then data.post else null
      new_tags = _.filter tags, (tag) ->
        not _.has(tag, "label")
      old_tags = _.filter tags, (tag) ->
          _.has(tag, "label")
          
      $.when(_.each old_tags, (old_tag) =>
        tag_post.save({tag: tag, post: post})
      ).done(=>
      	do callback
      )

    Обратились с вопросом "почему не работает".
    PS метод save асинхронный

    alek0585, 23 Апреля 2015

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