1. VisualBasic / Говнокод #26699

    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
    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
    Код с продакшена рабочего проекта :-D 
    
    Dim got_new_batch As Boolean = False
    Dim batch_numb As Integer = 0
    Dim temp_batch As Integer = 0
    While got_new_batch = False
    temp_batch = objRandom.Next(400000000)
    If check_batch_avaliable(temp_batch) = True Then
    got_new_batch = True
    batch_numb = temp_batch
    End If
    End While
    
    Public Function check_batch_avaliable(ByVal batch_number As Integer) As Boolean
    
    'CWC-7/11/2016-Rewritten to avoid runtime error
    
    Dim RC As Integer = -1
    
    Dim DBConnection As New IfxConnection(INFXConnectionStr_RPCentral)
    
    'Try
    
    Dim SQL As String = ""
    SQL = " select first 1 batch_numb from " + System.Configuration.ConfigurationManager.AppSettings("InformixTable") + " where batch_numb = " & batch_number
    
    Dim DBCommand As New IfxCommand(SQL, DBConnection)
    DBCommand.CommandType = CommandType.Text
    
    DBCommand.CommandTimeout = 200
    
    DBConnection.Open()
    
    RC = CInt(DBCommand.ExecuteScalar())
    
    DBConnection.Close()
    
    ' Catch ex As Exception
    ' Dim ErrMsg = ex.Message
    
    
    ' Finally
    
    If Not DBConnection Is Nothing Then
    
    If DBConnection.State = ConnectionState.Open Then
    DBConnection.Close()
    End If
    
    DBConnection = Nothing
    End If
    
    
    ' End Try
    
    If RC > 0 Then
    Return False
    Else
    Return True
    End If
    
    End Function

    Запостил: ageron, 27 Мая 2020

    Комментарии (46) RSS

    • Код с проекта в котором основной язык C# но главный цимус даже не в VB а втом ЧТО этот код делает с процом и БД :-D
      Ответить
    • да, процу и базе скучать не придется

      в бесконечном цикле выбирать рендомную запись этот лол

      Кстати, как часто он угадывает запись?
      Ответить
    • В чем вообще был прикол писать именно на VB ?
      До сих пор с него припекает, т.к попадались в т.ч забавные игрухи( типа того же Zombie Smashers ), написанных, видать, под WinXP.
      И, б.-же, сколько же оно требует всевозможных рантаймов, либ и проч необходимого для запуска( т.е даже на хрюше не всегда работало, а с семеркой и, тем более, десяткой - вообще веселуха )
      Ответить
      • >И, б.-же, сколько же оно требует всевозможных рантаймов, либ и проч необходимого для запуска
        msvbvm50.dll
        vbrun60sp6.exe занимал что-то около 10 метров.
        На фоне монструозных дотнетов и яв это ужос как много.
        Ответить
        • Говно, написанное на «VB», часто требует доустановки и регистрации (через regsvr32) всякого говна с расширением «.ocx». Проблема не в размере, а в том, что авторы забывают добавить это говно в инсталлятор. На машине автора всё работает — какие проблемы?
          Ответить
          • Это не проблемы VB.

            dll-hell и отсутствие пакетного менеджера общая болезнь виндов.

            Можно и в vc++ и в mingw наделать shared buildов и забыть добавить нужные dllки.
            Ответить
            • Доо сгенерируй %НАЗВАНИЕ_ТЕХНОЛОГИИ%-hell и с серьезным видом рассказывай об этом как о само-собой разумеющемся факте :)

              Конкретно в случае с виндой подобная проблема в особо запущенном состоянии была, почему-то, именно у VB..
              У остального - обычно хватало стандартной пачки редистов и все отлично работало.
              Ответить
              • Потому что ms vcredistы более популярные и обычно уже были установлены у юзеров.
                Ответить
                • Нет. Потому что установил конкретный редист и оно работает.

                  В случае с ВБ - нередко, требуется дополнительно куча стороннего и условно-стороннего барахла, притом, нередко, хз_какого, т.к сама прога, вылетая с ошибкой, это сообщает далеко не всегда.
                  Вот и думай потом, что конкретно и какой версии проге надобно, а так же - ну нафига было относительно простые проекты делать именно на ВБ, когда были всякие VC и иже с ними.
                  Ответить
                  • Мы с тобой одно и тоже написали с разницей в минуту
                    https://govnokod.xyz/_26699/#comment-533421

                    Как так?
                    Ответить
                    • Магия. Ты с какого ресурса пишешь ?
                      Спрашиваю, т.к у ГК много копий одно время было. Некоторые - даже с перепостом на основной ресурс творящегося на копии срача.
                      ..а потом - ломай голову, какого *** guestXXX сам с собой в десятке лиц спорит.
                      Но я давно на ГК не заходил. Чет ностальгия одолела и, как назло, сразу VB !:)

                      п.с: но я, все-таки, на целых 33 - 09 = 24 секунды раньше :)
                      Ответить
            • Можно. При попытке запуска программы выскочит сообщение, какой именно dll-ки не хватает.

              В случае же с VB выскакивает сообщение «Класс не зарегистрирован», причём зачастую даже названия класса нет. Причём выскочить оно может не сразу, а в процессе работы.
              Ответить
            • Это скорее проблема COM/ActiveX.

              Для С++ тебе нужен редист (анлесс ты статически склинкованный питуз), и ты понимаешь, что его надо бандлить (или линковаться статисськи).

              С VB таймлайн был таков.
              * Питуз установил себе Pituz.ocx (или он сам поставился с Internet Explorer Super Pack Plus).
              * У Питуза в реестре теперь есть COM объект с километровым CLSID GUID и .ocx файл к нему .
              * Прошло три года
              * Питуз запускает VB6.0, и видит там иконку петуза. Он уже и не знает/не помнит, откуда у него там эта иконка. Думает, что это часть VB6.0.
              * Перетаскивает иконку на формочку
              * Компилриует программу
              * Посылает получившийся .exe (с рантаймом VB) другу Зелибобе
              * Зелибоба не имеет Internet Explorer Super Pack Plus, и Pituz.ocx тоже не имеет
              * Зелибоба получает хуй.

              Умные Питузы умели собрать инсталлятор, который брал все нуждные .ocx, и регистрировал их (как requirements.txt или package.json)
              Ответить
        • Там проблема в том, что нередко требуется целая куча разных мелких модулей, о самом факте необходимости которых нередко даже сообщения об ошибках не говорят( запускаешь -> вылетает ошибка, например, 0х12345678 - и попробуй догадаться, какого черта приложению требуется ).
          Даже жаль чутка.. т.к некоторые игры были воистину годные и атмосферные.
          А из не_игр почти все благополучно ушло в небытие.

          Ну а дотнеты или явы - это отдельная история.
          Хотя, как минимум, там под конкретную версию обычно просто конкретный толстый установочник с тонной барахла, после установки которого все даже работает.. иногда.
          Ответить
          • > как минимум, там под конкретную версию обычно просто конкретный толстый установочник с тонной барахла, после установки которого все даже работает.. иногда.

            А разве с Microsoft Visual C++ Redistributable таких проблем не было? Вы скачали ms vcredist 2015, а для работы софта нужен ms vcredist 2008 или ms vcredist 2005.

            Под каждую версию дот.нета вообще нужно качать свой установщик. Тут без вариантов.

            C явой было проще: до 8ой версии можно было брать самую свежую и всё работало.
            В 9ой они много чего сломали, и теперь юзерам придётся держать несколько версий явы.
            Ответить
            • с редист таких проблем не было: они ставились side by side начиная с XP примерно

              на нагруженном софтом компе можно было увидиеть десять версий рантайма
              Ответить
              • >они ставились side by side начиная с XP примерно
                И с ними были проблемы.
                В xp не было 2005 и 2008.
                Ответить
                • ну так их надо было распостранять с софтом
                  Ответить
                  • Бинго!

                    > так их надо было распостранять с софтом
                    То есть проблема распространения зависимостей и либ это не какая-то особенность VB.
                    Ответить
            • >> Вы скачали ms vcredist 2015, а для работы софта нужен ms vcredist 2008 или ms vcredist 2005.

              Это вообще не проблема. У разных версий vcredist разные названия dll. Там сразу видно, какую версию нужно скачать и установить.
              Ответить
              • > сразу видно

                Ага, особенно сразу видно, когда винда тебе говорит "программа некорректно установлена, попробуйте её переустановить".
                Ответить
            • Забавно было, когда инсталлеру Qt нужен был vcredist, который он в себе и нёс.
              Ответить
              • Забавно будет, когда инкубаторы станут дохнуть от аллергии, коля себе яичный белок, в попытке сжечь меня.
                Ответить
        • >vbrun60sp6.exe занимал что-то около 10 метров.
          Что в 1999 году было овердохуя так-то
          Ответить
          • Я точно не помню.
            Но однозначно не меньше трёх дискет.
            Но там емнип были вообще всё. comctl32.ocx. А сам msvbvm весил куда меньше.
            Ответить
            • Я делал загрузочную дискету с «DOS», «Windows 3.1», «Сапёром» и «Пасьянсом». Если отрезать ненужное, это всё утаптывалось и запускалось (для чистоты эксперимента отключал винчестер).
              Ответить
          • 40 метров весил «Windows 95» без OSR (OSR2 уже весил метров 60).
            Ответить
      • Назови мне мейнстримовый язык с гц в 90х.
        Ответить
        • Java
          Ответить
          • Ты гуй на десктопе видел?
            Ответить
            • На каком десктопе? На x86?
              Представляю, как он тормозил
              Ответить
              • Он ещё и выглядел как говно. Как 3.11. Поэтому гуя на жаве в 90х - начале 2000х я почти не видел.
                В то время был васик, цпп и Делфи. Гц был только в васике и гуй он давал неплохой.
                Ответить
        • А зачем гц в 90-х ?
          Тем более, что речь о проектах 00-х...
          Ответить
          • В 90х VB действительно был нужен.

            С момента бандла дотнета в винду (примерно с семерки) писать на VB стало нужно никогда. Вообще.
            Ответить
            • VB кстати был первой пробой пера MS в реализации идеи IL-ассемблера, то есть байт-кода.
              Бейсик можно было конпелировать в псевдокод (P-code).
              Такие EXE-шники работали куда медленее, зато имели меньший объём. В целом фича была абсолютно бесполезной.

              Даже само название рантайма: msvbvm намекает.
              Ответить
              • У «Куикбейсика» тоже был байткод. Однако, он использовался для другого: для более компактного хранения исходников и для сокращения времени на парсинг. Была возможность восстановления текстового исходника из байткода. При работе в роли компилятора (если попросить его сделать экзешник), а не интерпретатора, «Куикбейсик» генерировал обычный нативный код.

                А вот в «VB» впервые решили использовать байткод не для зожатия исходников, а для рантайма.
                Ответить
                • Всем насрать.
                  Ответить
                • Ещё MobileBasic для j2me хранил программы в байткоде, и деконпелировал перед чтением или редактированием, но можно было сохранить и текстовый исходник на карту мапяти.

                  Кстати, во время редактирования код мог помещаться в поле не весь и приходилось выходить из режима редактирования, он конпелировал всё написанное говно, и потом надо опять открывать нужный кусочек, он деконпелировался и загружался в поле редактирования. Форматирование и регистр вне строковых литералов терялись конечно.

                  Веселуха!
                  Ответить
                  • Зато все исходники были идеально отформатированными.
                    Ответить
                  • Давайте что-то нормальное обсуждать.
                    Ответить
                • >для более компактного хранения исходников и для сокращения времени на парсинг

                  Да.
                  В том-то и дело что они почему-то не замахивались на кроссплатформенность. Только оптимизировали размер.

                  А ко времени выхода VB размер бинарника перестал играть такую важную роль, в то время как просадка скорости в интерпретаторе была значительной.
                  Ответить
              • В ту же эпоху были и другие конпеляторы, которые генерировали байткод (т. е. экзешник нёс в себе виртуальную машину): «Foxpro», «Clipper», «Clarion». Перечисленные языки объединяла одна особенность: интегрированная СУБД.
                Ответить
          • А зачем гц вообще? Почему именно в 90? Плюс визуальный гуй. Был ещё Делфи, но он без гц.
            Ответить
        • >Назови мне мейнстримовый язык с гц в 90х.
          VB6
          Там не нужно было морочить голову прямым управлением памятью и многопоточностью.
          В VB был простенький сборщик на счётчике ссылок.
          И хитрая псевдомногопоточность с DoEvents и таймерами.
          Ответить

    Добавить комментарий