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

    В номинации:
    За время:
  2. C++ / Говнокод #13347

    +14

    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
    template<class Key,class T,class H=Hash<Key>,
        class EQ=equal_to<Key>,class A=allocator<pair<const Key,T> > >
    class hash_map
    {
    public:
        //как map за исключением
        typedef H Hasher;
        typedef EQ key_equal;
        typedef size_t size_type;//из функции Hash видно что size_t нужно, а не int
        typedef Key key_type;
        typedef T mopped_type;
        //делаем объявление
        struct Entry;
        typedef T* iterator;
        typedef const Entry* const_iterator;
        typedef pair<iterator,iterator> equal_r;
    //...
     vector<map<key_type,mopped_type> *> v1;

    Тормозил std::unordered_map. Написал свой.

    LispGovno, 09 Июля 2013

    Комментарии (26)
  3. PHP / Говнокод #13296

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    function handle($handler) {
        //...
        ob_start();
        include("./handlers/$handler.php");
        $result = ob_get_contents();
        ob_end_clean();
        return $result;
    }

    Требуется результат работы внешнего скрипта вывести посреди работы внутреннего. Есть ли варианты без голимой буферизации выходного потока?

    vistefan, 03 Июля 2013

    Комментарии (26)
  4. Pascal / Говнокод #13215

    +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
    36. 36
    function FindPathInPath(path1: string; path2: string): Boolean;
    var
      lst: TStringlist;
      i, l: integer;
    begin
      lst := TStringlist.Create;
      // ----------------------------------------------
      path1 := stringreplaceall(path1, '/', '\');
      path1 := stringreplaceall(path1, '\\', '\');
      // ----------------------------------------------
       path2 := stringreplaceall(path2, '\', '');
       path2 := stringreplaceall(path2, '/', '');
       path2 := stringreplaceall(path2, '"', '');
       path2 := stringreplaceall(path2, '<', '');
       path2 := stringreplaceall(path2, '>', '');
       path2 := stringreplaceall(path2, '?', '');
       path2 := stringreplaceall(path2, '|', '');
       path2 := stringreplaceall(path2, ':', '');
       path2 := stringreplaceall(path2, '*', '');
      // ----------------------------------------------
      for i := 2 to CountString(path1, '\') + 1 do
      begin
        lst.Add(StringField(path1, '\', i));
      end;
      for l := 0 to lst.Count - 1 do
      begin
        if lstrcmpi(pchar(lst[l]), pchar(path2)) = 0 then
        begin
          FindPathInPath := True;
          break;
      end;
      end;
      lst.Free;
      FindPathInPath := false;
      exit;
    end;

    Функция для поиска названий подпапок в файловых путях.
    Трудно судить г..нокод ли это, но так как я все же использовал более изящное решение, то быть посему...

    Stertor, 23 Июня 2013

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

    −160

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    Ученик 1С спросил у своего учителя: что означает аббревиатура "Один Эс"?
    Учитель долго думал и наконец ответил ему:
    - "Один" - это когда солнечный день и воняет из трубы, это "Один"
    А "Эс", что такое "Эс", - спросил ученик
    - "Эс" - это когда солнечный день и опять же воняет из трубы

    Если бы у 1С были коаны, они выглядели бы примерно так.
    По мотивам к/ф "Моцарт" 2006

    serpinski, 02 Июня 2013

    Комментарии (26)
  6. C# / Говнокод #13042

    +139

    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
    if (sLastChange.StartsWith("ERROR") && sLastChange != "ERROR_EXPOPR")
     {
       logClass.LogStd("========== DATABAZE RS WITH ELSE EXPOPR ERROR: " + sLastChange, MethodBase.GetCurrentMethod());
     }
     else
     {
       SqlCommand oCommand = oConToCom.CreateCommand();
       oCommand.CommandText = configClass.GetAppConfig(oXml, "ToDB_SqlSelectChangeDestinationAfter");
       string sDateLast = oCommand.ExecuteScalar().ToString();
    
       if (oConFrom.State != ConnectionState.Closed) { try { oConFrom.Close(); } catch { } }
        oConFrom.Open();
        oComDateFrom.CommandText = configClass.GetAppConfig(oXml, "ToDB_SqlSelectChangeSource");
        string sDateFrom = oComDateFrom.ExecuteScalar().ToString();
        if (oConFrom.State != ConnectionState.Closed) { try { oConFrom.Close(); } catch { } }
    
        if (sDateLast == sDateFrom)
        {
           logClass.LogStd("========== DATABAZE EXPOPR WITHOUT CHANGE", MethodBase.GetCurrentMethod());
        }

    устроился на новую работу, все вокруг с кучей сертификатов

    taburetka, 23 Мая 2013

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

    +18

    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
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    class Mutex
    {
      HANDLE m_Mutex;
    public:
      Mutex()
      {
        m_Mutex = CreateMutex(0, false, 0);
      }
    
      ~Mutex()
      {
        ReleaseMutex(m_Mutex);
        CloseHandle(m_Mutex);
      }
    
      void Lock()
      {
        auto lv_WaitResult = WaitForSingleObject(m_Mutex, 10000);
        assert(lv_WaitResult != WAIT_TIMEOUT);
      }
    
      void Unlock()
      {
        ReleaseMutex(m_Mutex);
      }
    };
    
    
    template<int C>
    struct GLocker
    {
      static Mutex m_Mutex;
    };
    template<int C>  Mutex GLocker<C>::m_Mutex;
    
    class Locker
    {
      Mutex *m_Mutex;
    
    public:
      Locker(Mutex &_Mutex)
      {
        m_Mutex = &_Mutex;
        m_Mutex->Lock();
      }
    
      virtual ~Locker()
      {
        m_Mutex->Unlock();
      }
    };
    
    
    class ThreadCreator
    {
    protected:
      static void NewThread(void *_Func)
      {
        (*(std::function<void()>*)_Func)();
        delete (std::function<void()>*)_Func;
      }
    
    public:
      static ThreadCreator g_ThreadCreator;
    
      HANDLE operator=(const std::function<void()> &_Func)
      {
        std::function<void()> *lv_Func = new std::function<void()>(_Func);
        return (HANDLE)_beginthread(ThreadCreator::NewThread,0,(void*)lv_Func);
      }
    };
    ThreadCreator ThreadCreator::g_ThreadCreator;
    
    
    #define LOCK const Locker  _Lock##__LINE__##__COUNTER__ = GLocker<9000 + __COUNTER__>::m_Mutex // 9000 является запасом для пользовательских номеров.
    #define LOCK_EX(Port) const Locker  _Lock##__LINE__##__COUNTER__ = GLocker<Port>::m_Mutex // блокирует определённый мьютекс, полезно когда нужно делать синхронизацию из разных мест.
    
    #define GO_FUNC ThreadCreator::g_ThreadCreator = 
    #define GO_EX(...) GO_FUNC  [__VA_ARGS__]() mutable -> void
    #define GO GO_FUNC  []() -> void

    Подсказка сайта:
    http://www.gamedev.ru/code/tip/tread_creation

    LispGovno, 25 Апреля 2013

    Комментарии (26)
  8. Python / Говнокод #12880

    −97

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    @render_to_json()
    def view(request):
        # ...
        return {'name':obj.name for obj in
                    Company.objects.filter(id=cid, is_valid=True)}

    Не, ну а чё? )

    Crazyzubr, 11 Апреля 2013

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

    +14

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    void ThumbnailAdapter::clearCache(size_t index) {
        if ((size_t)-1 == index) {
            mImages.clear();
        } else {
            ImagesMap::iterator it = mImages.find (index);
            if (mImages.end() != it) {
                mImages.erase(it);
            }
        }
    }

    годная очистка map'ы

    shomeser, 12 Марта 2013

    Комментарии (26)
  10. C# / Говнокод #12718

    +113

    1. 1
    http://habrahabr.ru/post/172129/

    «Мне нужен был online-сервис для генерации GUID»

    Пожалуйста, подключитесь к интернету, чтобы сгенерировать гуид. Что дальше? Конкатенация строк через RESTful сервер в облаке амазона?

    vse_govno, 10 Марта 2013

    Комментарии (26)
  11. Pascal / Говнокод #12714

    +96

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    procedure TForm1.FormCreate(Sender: TObject);
    var formattedDateTime : string; S: TSearchRec; sf : Int64;
    begin
      Application.OnException := MyHandler;
      if IsRunningEXEName(ExtractFileName(Application.ExeName)) = true then
      begin
        Application.Terminate;
        Exit;
      end;

    Попытка запретить запуск копии программы. Неудачная.

    increazon, 09 Марта 2013

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