1. Си / Говнокод #26801

    +2

    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
    /* meta */
    typedef struct r_anal_meta_item_t {
    	ut64 from;
    	ut64 to;
    	ut64 size;
    	int type;
    	int subtype;
    	char *str;
    	int space;
    } RAnalMetaItem;
    
    typedef struct {
    	struct r_anal_t *anal;
    	int type;
    	int rad;
    	SdbForeachCallback cb;
    	void *user;
    	int count;
    	struct r_anal_type_function_t *fcn;
    } RAnalMetaUserItem;
    
    typedef struct r_anal_range_t {
    	ut64 from;
    	ut64 to;
    	int bits;
    } RAnalRange;
    
    #define R_ANAL_UNMASK_TYPE(x) (x&R_ANAL_VAR_TYPE_SIZE_MASK)
    #define R_ANAL_UNMASK_SIGN(x) (((x& R_ANAL_VAR_TYPE_SIGN_MASK)>> R_ANAL_VAR_TYPE_SIGN_SHIFT)==R_ANAL_VAR_TYPE_UNSIGNED)?0:1
    
    #define R_ANAL_GET_OFFSET(x,y,z) \
    	(x && x->binb.bin && x->binb.get_offset)? \
    		x->binb.get_offset (x->binb.bin, y, z): -1
    enum {
    	R_ANAL_DATA_TYPE_NULL = 0,
    	R_ANAL_DATA_TYPE_UNKNOWN = 1,
    	R_ANAL_DATA_TYPE_STRING = 2,
    	R_ANAL_DATA_TYPE_WIDE_STRING = 3,
    	R_ANAL_DATA_TYPE_POINTER = 4,
    	R_ANAL_DATA_TYPE_NUMBER = 5,
    	R_ANAL_DATA_TYPE_INVALID = 6,
    	R_ANAL_DATA_TYPE_HEADER = 7,
    	R_ANAL_DATA_TYPE_SEQUENCE = 8,
    	R_ANAL_DATA_TYPE_PATTERN = 9,
    };
    
    // used from core/anal.c
    #define R_ANAL_ADDR_TYPE_EXEC      1
    #define R_ANAL_ADDR_TYPE_READ      1 << 1
    #define R_ANAL_ADDR_TYPE_WRITE     1 << 2
    #define R_ANAL_ADDR_TYPE_FLAG      1 << 3
    #define R_ANAL_ADDR_TYPE_FUNC      1 << 4
    #define R_ANAL_ADDR_TYPE_HEAP      1 << 5
    #define R_ANAL_ADDR_TYPE_STACK     1 << 6
    #define R_ANAL_ADDR_TYPE_REG       1 << 7
    #define R_ANAL_ADDR_TYPE_PROGRAM   1 << 8
    #define R_ANAL_ADDR_TYPE_LIBRARY   1 << 9
    #define R_ANAL_ADDR_TYPE_ASCII     1 << 10
    #define R_ANAL_ADDR_TYPE_SEQUENCE  1 << 11
    
    #define R_ANAL_ARCHINFO_MIN_OP_SIZE 0
    #define R_ANAL_ARCHINFO_MAX_OP_SIZE 1
    #define R_ANAL_ARCHINFO_ALIGN 2
    #define R_ANAL_ARCHINFO_DATA_ALIGN 4

    Как нужно называть идентификаторы.

    Источник:
    https://github.com/radareorg/radare2/

    TEH3OPHblu_nemyx, 11 Июля 2020

    Комментарии (81)
  2. Куча / Говнокод #26800

    0

    1. 1
    Продолжаем форс Перла

    Нечто запредельно пиздатое в перле — это книга Ларри, написанная с охуенным чувством юмора и предельно чистым и умным языком, как будто сам стиль книги и то, с каким Ларри мы через этот текст знакомимся — является одним из образцов применения философии перла на практике. Роман Кашицин, царствие ему небесное, ценил; есть ещё среди нас ценители?

    vistefan, 10 Июля 2020

    Комментарии (483)
  3. Куча / Говнокод #26799

    0

    1. 1
    2. 2
    3. 3
    Илья Перекопский, вице-президент мессенджера «Телеграм», будет на встрече премьера Михаила Мишустина с представителями IT-индустрии в Иннополисе, Казань
    
    Замруководителя фракции "Справедливая Россия" Федот Тумусов планирует организовать в Госдуме круглый стол с онлайн-участием основателя Telegram Павла Дурова

    ДА НЕ ПЕРЕДАВАЛ Я КЛЮЧИ

    https://roem.ru/08-07-2020/282610/tlg-to-russia-with-love/
    https://ria.ru/20200710/1574142863.html

    Fike, 10 Июля 2020

    Комментарии (65)
  4. Perl / Говнокод #26798

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    # The API methods die when an error occurs.
    say $api->getMe->{result}{username};
    # ... but error handling is available as well.
    my $result = eval { $api->getMe }
        or die 'Got error message: ', $api->parse_error->{msg};

    https://metacpan.org/pod/WWW::Telegram::BotAPI

    Продолжаем пиздеть про перл.

    Решил выбрать предметную область "Телеграм-бот" чтобы поднатаскаться в «Perl».

    Вопрос: что за говно в оп-коде? Это говноспособ обработки ошибок предлагают, или такое распространено? Типа eval вместо try?

    vistefan, 09 Июля 2020

    Комментарии (88)
  5. Java / Говнокод #26797

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    List<UserScoreDTO> userScores = users.stream()
                    .map((u) -> ScoreUtils.aggregateUserAndFlagData(u, maxTestScore))
                    .collect(toList());
    
    return userScores.stream();

    Collect to List<UserScoreDTO> then stream the list to Stream<UserScoreDTO>

    johann, 08 Июля 2020

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

    0

    1. 1
    2. 2
    IntStream.range(1, userScores.size() + 1)
                    .forEach(position -> userScores.get(position - 1).setPosition(position));

    Converting from 0 based array to 1 based array (for some reason).

    johann, 08 Июля 2020

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public static bool found13 = false;
    public static bool found11 = false;
    // ...
    public List<int> Children = new List<int>(); //index of children
    public List<int> Children13 = new List<int>(); //index of children

    Код бота-автора подавляющего большинства статей на нескольких языках. В основном Шведский (автор бота — швед) и, наверное, Себуанский, не знаю как правильно по-русски, короче язык океании, где-то на Филиппинах на нем говорят. На последнем, между прочим, бот нахерачил столько, что вывел себуанскую Википедию на второе место по количеству статей вообще.

    Потрясающий пример говнокода, написанного учёным для дела, и приемлемо решающий свою задачу. На основе отрытых баз знаний о таксонах биологических видов и географических объектах (реки, горы, населенные пункты), генерит статьи-заглушки с краткой информационной сводкой.

    https://sv.wikipedia.org/wiki/Wikipedia:Projekt_DotNetWikiBot_Framewor k/Lsjbot/Makespecies

    Сори, если баян.

    vistefan, 06 Июля 2020

    Комментарии (108)
  8. C++ / Говнокод #26793

    +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
    if (feet_yaw <= 58)
    	{
    		if (-58 > feet_yaw)
    			player->EyeAngles()->y = body_max_rotation + player->EyeAngles()->y;
    	}
    	else
    	{
    		player->EyeAngles()->y = body_max_rotation - player->EyeAngles()->y;
    	}
    	if (player->GetAnimOverlay(6)->m_flPlaybackRate > 0.1)
    	{
    		for (int resolve_delta = 58.f; resolve_delta < -58.f; resolve_delta = resolve_delta - 20.f)
    		{
    			player->EyeAngles()->y = resolve_delta;
    		}
    	}

    ресольвер

    esoterik, 04 Июля 2020

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

    +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
    19. 19
    20. 20
    21. 21
    if (UpdateLBY)
    			{
    				auto m_flDelta = csgo->local->GetPlayerAnimState()->m_flGoalFeetYaw - csgo->local->GetPlayerAnimState()->m_flEyeYaw;
    
    				if (m_flDelta >= 35.0 && m_flDelta <= -35.0) {
    					// the first lby break is left.
    					csgo->cmd->viewangles.y -= 122.f;
    				}
    				else {
    					if (m_flDelta <= -35.0) {
    						// the second lby break is right.
    						csgo->cmd->viewangles.y += 122.f;
    					}
    					if (m_flDelta >= 35.0) {
    						// the loop.
    						csgo->cmd->viewangles.y -= 122.f;
    					}
    				}
    				csgo->send_packet = false;
    				return;
    			}

    esoterik, 03 Июля 2020

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

    +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
    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
    69. 69
    70. 70
    package literatePrimes;
    
    import java.util.ArrayList;
    
    public class PrimeGenerator {
      private static int[] primes;
      private static ArrayList<Integer> multiplesOfPrimeFactors;
    
      protected static int[] generate(int n) {
        primes = new int[n];
        multiplesOfPrimeFactors = new ArrayList<Integer>();
        set2AsFirstPrime();
        checkOddNumbersForSubsequentPrimes();
        return primes;
      }
    
      private static void set2AsFirstPrime() {
        primes[0] = 2;
        multiplesOfPrimeFactors.add(2);
      }
    
      private static void checkOddNumbersForSubsequentPrimes() {
        int primeIndex = 1;
        for (int candidate = 3;
             primeIndex < primes.length;
             candidate += 2) {
          if (isPrime(candidate))
            primes[primeIndex++] = candidate;
        }
      }
    
      private static boolean isPrime(int candidate) {
        if (isLeastRelevantMultipleOfNextLargerPrimeFactor(candidate)) {
          multiplesOfPrimeFactors.add(candidate);
          return false;
        }
        return isNotMultipleOfAnyPreviousPrimeFactor(candidate);
      }
    
      private static boolean
      isLeastRelevantMultipleOfNextLargerPrimeFactor(int candidate) {
        int nextLargerPrimeFactor = primes[multiplesOfPrimeFactors.size()];
        int leastRelevantMultiple = nextLargerPrimeFactor * nextLargerPrimeFactor;
        return candidate == leastRelevantMultiple;
      }
    
      private static boolean
      isNotMultipleOfAnyPreviousPrimeFactor(int candidate) {
        for (int n = 1; n < multiplesOfPrimeFactors.size(); n++) {
          if (isMultipleOfNthPrimeFactor(candidate, n))
            return false;
        }
        return true;
      }
    
      private static boolean
      isMultipleOfNthPrimeFactor(int candidate, int n) {
       return
         candidate == smallestOddNthMultipleNotLessThanCandidate(candidate, n);
      }
    
      private static int
      smallestOddNthMultipleNotLessThanCandidate(int candidate, int n) {
        int multiple = multiplesOfPrimeFactors.get(n);
        while (multiple < candidate)
          multiple += 2 * primes[n];
        multiplesOfPrimeFactors.set(n, multiple);
        return multiple;
      }
    }

    https://habr.com/ru/post/508876/
    Вероятно, хватит рекомендовать «Чистый код»
    > Я остановлюсь на ещё одном вопиющем примере кода. Это генератор простых чисел из главы 8:

    gost, 03 Июля 2020

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