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

    В номинации:
    За время:
  2. Куча / Говнокод #4160

    +101

    1. 1
    2. 2
    это не говно код это говно сайт 
    http://youex.ru

    Vasiliy, 03 Сентября 2010

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

    −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
    #!/bin/bash
    
    status=$(xinput list-props 11 | grep 'Device Enabled' | tail -c 2 | tr -d '\n')
    
    echo "Current TB status: $status"
    
    if [[ $status = "0" ]]
    then
        xinput enable 11
        echo "Enabled touchpad!"
    else
        xinput disable 11
        echo "Disabled touchpad!"
    fi

    Как вам мой скриптик?

    JloJle4Ka, 25 Октября 2021

    Комментарии (233)
  4. Python / Говнокод #26837

    +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
    from numba import jit
    
    
    def mults_no_jit(start, end, step):
        min_i = min(start, end)
        for i in range(start, end, step):
            if i < min_i:
                return
            for j in range(i, end, step):
                x = i * j
                x_orig = x
                x_reverse = 0
                while x > 0:
                    x_reverse *= 10
                    x_reverse += x % 10
                    x //= 10
                if x_orig == x_reverse:
                    min_i = max(min_i, j)
                    yield x_orig
                    break
                    
    
    @jit(nopython=True)
    def mults_jit(start, end, step):
        min_i = min(start, end)
        for i in range(start, end, step):
            if i < min_i:
                return
            for j in range(i, end, step):
                x = i * j
                x_orig = x
                x_reverse = 0
                while x > 0:
                    x_reverse *= 10
                    x_reverse += x % 10
                    x //= 10
                if x_orig == x_reverse:
                    min_i = max(min_i, j)
                    yield x_orig
                    break
    
    
    print(timeit.timeit('max(mults_no_jit(999, 99, -1))', globals=globals(), number=100))
    # 4.2907474 секунды
    
    print(timeit.timeit('max(mults_jit(999, 99, -1))', globals=globals(), number=100))
    # 0.1662201 секунд первый запуск, 0.0333973 последующие

    Теперь я за «Numba».

    gost, 02 Августа 2020

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

    +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
    private void checkButton_Click(object sender, EventArgs e)
        {
          if (this.passportTextbox.Text.Trim() == "")
          {
            int num1 = (int) MessageBox.Show("Введите серию и номер паспорта");
          }
          else
          {
            string rawData = this.passportTextbox.Text.Trim().Replace(" ", string.Empty);
            if (rawData.Length < 10)
            {
              this.textResult.Text = "Неверный формат серии или номера паспорта";
            }
            else
            {
              string commandText = string.Format("select * from passports where num='{0}' limit 1;", (object) Form1.ComputeSha256Hash(rawData));
              string connectionString = string.Format("Data Source=" + Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\db.sqlite");
              try
              {
                SQLiteConnection connection = new SQLiteConnection(connectionString);
                connection.Open();
                SQLiteDataAdapter sqLiteDataAdapter = new SQLiteDataAdapter(new SQLiteCommand(commandText, connection));
                DataTable dataTable1 = new DataTable();
                DataTable dataTable2 = dataTable1;
                sqLiteDataAdapter.Fill(dataTable2);
                if (dataTable1.Rows.Count > 0)
                {
                  if (Convert.ToBoolean(dataTable1.Rows[0].ItemArray[1]))
                    this.textResult.Text = "По паспорту «" + this.passportTextbox.Text + "» доступ к бюллетеню на дистанционном электронном голосовании ПРЕДОСТАВЛЕН";
                  else
                    this.textResult.Text = "По паспорту «" + this.passportTextbox.Text + "» доступ к бюллетеню на дистанционном электронном голосовании НЕ ПРЕДОСТАВЛЯЛСЯ";
                }
                else
                  this.textResult.Text = "Паспорт «" + this.passportTextbox.Text + "» в списке участников дистанционного голосования НЕ НАЙДЕН";
                connection.Close();
              }
              catch (SQLiteException ex)
              {
                if (ex.ErrorCode != 1)
                  return;
                int num2 = (int) MessageBox.Show("Файл db.sqlite не найден. Положите файл в папку вместе с exe.");
              }
            }
          }
        }

    https://habr.com/post/510512/
    Медуза, паспорта и говнокод — почему номера паспортов всех участников интернет-голосования попали в Интернет

    gost, 11 Июля 2020

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

    −1

    1. 1
    https://vc.ru/services/71897-specialist-po-infobezopasnosti-iz-kazahstana-zapustil-telegram-bota-mailsearchbot-kotoryy-vydaet-paroli-po-adresu-pochty

    Проверь

    AHCKuJlbHblu_nemyx, 18 Июня 2019

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

    0

    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
    https://github.com/dotnet/coreclr/blob/a589e3926a1780256fdb52376f8681fe047daf54/src/vm/i386/cgenx86.cpp#L1551-L1553
    
        PAL_TRY(Param *, pParam, &param)
        {
            unsigned char buffer[16];
            DWORD* dwBuffer = NULL;
    
            DWORD maxCpuId = getcpuid(0, buffer);
    
            if (maxCpuId < 1)
                goto lDone;
    
            dwBuffer = (DWORD*)buffer;
    
            if (dwBuffer[1] == 'uneG') {
                if (dwBuffer[3] == 'Ieni') {
                    if (dwBuffer[2] == 'letn')  {  // get SMT/multicore enumeration for Intel EM64T

    С каких пор в одинарные кавычки можно писать больше одного символа? Это какое-то MSVC или что?

    j123123, 09 Мая 2018

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

    +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
    // https://godbolt.org/z/QAR_nT
    // https://govnokod.ru/26701#comment550329
    #include <cstddef>
    #include <string>
    #include <cassert>
    
    
    struct assert_failure
    {
        explicit assert_failure(const char *sz)
        {
            std::fprintf(stderr, "Assertion failure: %s\n", sz);
            std::quick_exit(EXIT_FAILURE);
        }
    };
    
    // эта херня не совсем корректно будет обрабатывать всякую хрень вроде ", , , " - оно это посчитает за 4 аргумента,
    // и если считать " скобочки, тогда еще надо запилить обработку эскейп-последовательности, для хуйни типа "pidor\" govno"
    // но мне лень эту хуйню допиливать.
    constexpr std::size_t count_args(const char *s, std::size_t depth = 0, std::size_t pos = 0, std::size_t count = 0)
    {
      if (s[pos] == '\0'){
        if(depth != 0)
          throw assert_failure("kakoi bagor)))\n");
        if(pos == 0)
          return 0;
        return count+1;
      }
      else if(s[pos] == '{')
      {
        return count_args(s, depth + 1, pos + 1, count);
      }
      else if(s[pos] == '}')
      {
        if(depth == 0)
          throw assert_failure("kakoi bagor)))\n");
        return count_args(s, depth - 1, pos + 1, count);
      }
      else if(depth == 0)
      {
        if(s[pos] == ',')
        {
          return count_args(s, depth, pos + 1,  count + 1);
        }
      }
      return count_args(s, depth, pos+1,  count); 
    }
    
    #define TO_STR(...) #__VA_ARGS__
    #define ARGNUM(...) count_args(TO_STR(__VA_ARGS__))
    
    #define krestogovnotypeof(a) std::remove_reference<a>::type
    
    #define FOR_RANGE(type, varname, ...) for(struct {size_t cnt; krestogovnotypeof(type) arr[ ARGNUM(__VA_ARGS__)  ];  } varname = {0, {__VA_ARGS__}}; varname.cnt < sizeof(varname.arr)/sizeof(type); ++varname.cnt )
    
    int main(void)
    {
      FOR_RANGE(int[2], k, {1,2}, {3,4}, {5,6}, {7,8})
        printf("{%d %d},\n", k.arr[k.cnt][0], k.arr[k.cnt][1]);
      return EXIT_SUCCESS;
    }

    Какая крестопараша((( В вижуальхуюдии вроде собирается, но проверить корректность работы не могу. Как вы этим днищекомпилятором вообще пользуетесь?

    Было б круто, если бы были такие constexpr функции, которые в компилтайме могут куски исходного кода высирать как бы прямо в исходник, и потом уже чтоб это компилировалось

    j123123, 29 Мая 2020

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

    +181

    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
    #include "iostream"
    using namespace std;
    
    enum {MaxFucktorial=13};
    static int fucks[MaxFucktorial+1];
    
    template<const int ValuePosition, const int Value>
    struct initFuckedValue
    {
    	enum {CurrentValue=Value*ValuePosition};
    	static void fuckUp(void)
    	{
    		fucks[ValuePosition]=CurrentValue;
    		initFuckedValue<ValuePosition+1, CurrentValue>::fuckUp();
    	};
    };
    template<const int Value>
    struct initFuckedValue<MaxFucktorial, Value>
    {
    	static void fuckUp(void){};
    };
    void InitFucks(void)
    {
    	fucks[0]=1;
    	initFuckedValue<1,1>::fuckUp();
    };
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	cout<<"Введите аргумент факториала: "<<endl;
    	InitFucks();
    	int fuckArg=0;
    	cin>>fuckArg;
    	cout<<"Начинаем считать факториал..."<<endl
    	<<"Подсчёт факториала успешно завершён. ОК."<<endl
    	<<"Результат: "<<fucks[fuckArg]<<endl;
    	cin>>fuckArg;
    	return 0;
    }

    Решил запостить всё. Жемчужена.

    Мой знакомый, молодой преподаватель-аспирант из института пришёл однажды расстроенный. Спрашиваю у него: "Что случилось?"
    -- "Один мой первокурсник, когда я дал ему задание посчитать факториал через рекурсию принёс мне какую-то непонятную компилирующуюся галиматью. И считает она уж слишком быстро... Это какая-то программа обманка. Вообщем я ему поставил 2."

    Да, это лаба. ^_^

    Говногость, 28 Июня 2011

    Комментарии (232)
  10. Куча / Говнокод #3028

    +78.4

    Анонимус-срач на говнокод.ру

    Мне немногозначно дали понять, что анонимы всех достали. Пишут в почту, в icq, в реформал и даже смски шлют.
    Проект уже вырос из того нежного возраста, когда его судьбу мог решать я сам. Посему предлагаю обсудить сложившуюся ситуацию и прийти к соглашению, выпиливать ли анонимов или оставлять.

    striker, 17 Апреля 2010

    Комментарии (231)
  11. Си / Говнокод #27850

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    #define POOL_ZERO_DOWN_LEVEL_SUPPORT
    #include <wdm.h>
    
    char* p = ExAllocatePoolZero(NonPagedPool, 42, '_GK_');
    ASSERT(p[0] == 0);

    https://www.osr.com/blog/2020/07/14/bug-in-new-function-exallocatepoolzero-results-in-security-vulnerability-and-crashes/

    microsoft_real_calloc() и 100500 способов отстрела ноги с помощью него.

    bormand, 02 Декабря 2021

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