1. C++ / Говнокод #16122

    +7

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    typedef SmartPtr<CallRec> callptr;
    
    callptr *m_call;
    
    if (m_call && (*m_call) && (*m_call)->SomeMethod()) {
        // ...
    }

    GnuGK и смартпоинтеры.

    Запостил: bormand, 06 Июня 2014

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

    • >GnuGK
      Говнокод перешал под крыло GNU?
      Ответить
    • глупый указатель на умный указатель

      программисты индиректили индиректили да не выиндиректили
      Ответить
    • А SmartPtr это не unique_ptr случайно?
      А то я видел подобное. Гениальная причина: «а он по-другому не копируется»
      Ответить
      • http://openh323gk.cvs.sourceforge.net/viewvc/openh323gk/openh323gk/RasTbl.h?revision=1.287&view=markup

        Строки 71-93.

        В общем это boost::intrusive_ptr<T>.
        Ответить
        • P.S. Автор смартпоинтера - скобконенавистник:
          SmartPtr<T> &operator=(const SmartPtr<T> & p) {
              if (pt != p.pt)
                  Dec(), pt = p.pt, Inc();
              return *this;
          }
          Ответить
          • pythonic way..
            Ответить
          • Какая интересная конструкция, надо бы запомнить.
            Ответить
            • Да ну его. До точки с запятой мизинец двигать не нужно, а до запятой - нужно. Лишнюю энергию тратить.
              Ответить
              • Народу просто лень {} вводить. На америкоских клавах это просто, но даже в европе есть страны где клавы просто через Ж сделаны и до большинства спец символов нужно 3/более нажатий.

                Страуструп в крестах <%/%>/and/or/etc не от хорошей жизни ввел. На его родной датской клаве до многих символов добиратся не легко. Та же фигня на французской клаве и в какой-то степени на немецких клавах.
                Ответить
                • >Страуструп в крестах <%/%>/and/or/etc не от хорошей жизни ввел. На его родной датской клаве до многих символов добиратся не легко.
                  Да что Вы - кресты один из самых перегруженных значками и символами языков.
                  Вообще я сильно сомневаюсь что программы там пишутся на датском, думаю у большинства кодеров в мире стандартная английская раскладка.
                  Ответить
                  • > Вообще я сильно сомневаюсь что программы там пишутся на датском, думаю у большинства кодеров в мире стандартная английская раскладка.

                    Нет. На европейских клавах буквы в других местах находятся. Как в той же немецкой - Z vs. Y. И у кнопок слева (между буквами и Enter'ом) другая физическая форма: для тех кто печатает в слепую это большая проблема. Поэтому для большинства англиская раскладка так же трудна как и нативная.
                    Ответить
                    • Значит Сиплюструп и вправду тролль - все мучаются, а он смеется и насыпает еще.
                      А сам при этом давно не пишет ничего.
                      ~!%^&*() ?: [] {} ;<> - все эти значки используются по несколько раз.
                      Кстати надо бы еще $зазаюзать, что поставит его в один ряд с такими чудесными языками как рнр и баш.
                      Ответить
                      • А причем тут Страуструп то?

                        В крестах он только попытался облегчить проблему, унаследованую из С.

                        Те же грабли - с теми же символами - и в жабе и жабоскрипте.

                        Да и на англиской клаве это всего лишь "лучше" а не "прекрасно". Как по мне, это и есть причина почему народ пытается постоянно языки изобрести в которых {} и () не совсем не используются.
                        Ответить
                        • >в жабе и жабоскрипте.
                          Ну не надо.

                          # которую я кстати забыл там нет.
                          * и & там означают ТОЛЬКО умножение и операцию И.
                          ~ означает ТОЛЬКО побитовое отрицание, а не деструктор
                          [] означают ТОЛЬКО массив/мапу, а не лямбды
                          : использовалось ТОЛЬКО в тернарнике, а не наследование, неймспейс, после public, private
                          Про то что могут означать в ерстах фигурные скобки вообще молчу

                          И наконец самое главное - в этих языках нельзя определить поведение этих значков для своих структур, ибо там нету перегрузки операторов.
                          Ответить
                        • > в которых {} и () не совсем не используются
                          Я, например, в таком случае посчитал бы частоты используемых символов, и для наиболее частых ввёл бы более короткие или удобные операторы.
                          Например, очевидно, что [] набирается гораздо быстрее и удобнее, но требуется реже, чем {}, так что вполне квадратные скобки можно оставить для блоков кода, фигурные - для всего остального.
                          Ответить
                          • > так что вполне квадратные скобки можно оставить для блоков кода, фигурные - для всего остального.
                            Так вот кто придумал TCL...
                            Ответить
                      • > Кстати надо бы еще $зазаюзать
                        gcc позволяет его юзать в именах:
                        for (int $i = 0; $i < 100; ++$i)
                            ...
                        Ответить
                    • > На европейских клавах буквы в других местах находятся.
                      Хм, то есть получается, что нам, русским, очень повезло, что буквы не влезли, и вместо натягивания ужа на ежа сделали кошерную отдельную раскладку ;)
                      Ответить
                      • Да. Повезло в том что стандартную раскладку списывали с американской клавы, а не с ISO.

                        В штатах к слову две раскладки: ISO и ANSI. Типичная (с прямоуголным Enter'ом) это ANSI. ISO почти никто не пользуется, но она есть.
                        Ответить
                        • Прямоугольный - это такой, который занимает всего один ряд? Не, не люблю такие. Самая жопа, правда, это с маленьким бекспейсом. А еще достает то, что вендоры лепят на Гипер свою херню какую-то, вместо того, чтобы, например, переложить ее куда-нибудь типа "паузы".
                          Ответить
                          • А по моим ощущениям, в таком расположении кнопок баланс Силы наиболее соблюдён.
                            http://preview.tinyurl.com/noy5k36
                            А то этот бекслэш куда только не пихуют. То бекспейс укоротят, то энтеру левую пипку отрежут. Или вообще с левым шифтом поселят (НЕНАВИСТЬ!!!1).
                            Ответить
                            • А мне попадались две совершенно ебанутых клавы - на одной выпилили insert, поставив вместо него delete на джве клетки высотой. А на второй повернули блок с ins/del/pgup и т.п. на 90 градусов.

                              Ноутовские же клавы уёбищны по определению, хоть внешнюю подключай :(

                              Походу если я и буду покупать ноут - то насру на все ТТХ, лишь бы клава была удобная и корпус и экран не глянцевые...
                              Ответить
                              • Я к ноуту сразу клаву купил, ибо -

                                1 удобнее
                                2 продлевает жизнь ноутбучной клаве (ибо внешнюю не всегда с собой потаскаешь)

                                С экраном согласен, а вот какой корпус мне все равно.
                                Ответить
                                • cleaned
                                  Ответить
                                  • http://msdn.microsoft.com/ru-ru/library/0b1bf3y3(v=vs.110).aspx

                                    мне кажется ты уже это спрашивал раз 5
                                    Ответить
                                  • > То, что материнке - пизда, поц понять не в силах
                                    Слишком общее утверждение. Мне, кроме всего прочего, пришлось потусить в среде ремонтников железа, ну и соответствующие навыки и познания пришли. Последние три залитых ноута, которые приносили коллегам, отделались именно клавиатурой, потому что в них была специальная полость, в которой кроме клавиатуры и шлейфа ничего не было.
                                    Правда, стоит отметить, что пива не видел с 2012-го, обычно это чай, жидкость для снятия макияжа (адово воняет) или сок.
                                    Ответить
                                • > продлевает жизнь ноутбучной клаве
                                  А мне как-то смешно стало. Всё же, не на столь долгий срок берут ноутбуки, чтобы за клавиатуру в этом смысле волноваться. Не понимаю я этого.
                                  Такие размышления присущи скорее более старому поколению, выбирающему ноутбук на ближайшие 10-20 лет.

                                  P.S. Но клавиатуру на нетбуке сам "исписал" и менял, уж очень привык к ней, из-за этого теперь на нормальных больших клавиатурах пальцы проваливаются.

                                  > какой корпус мне все равно.
                                  Желательно, чтобы края были максимально гладкие. Острые края обдираются месяца за три.
                                  Ответить
                                  • >Всё же, не на столь долгий срок берут ноутбуки, чтобы за клавиатуру в этом смысле волноваться.

                                    У меня знакомый клаву за год разьебал. Да и кофе фатально - лучше уж на внешнюю прольется.
                                    Ответить
                                    • А я в этом году зимой, возможно даже, сидя на ГК, задел таки кружку и "порадовал" ноутбук. Но быстро перевернул и протёр. Пишу с него же.
                                      Ответить
                              • > Ноутовские же клавы уёбищны по определению
                                > лишь бы клава была удобная и корпус и экран не глянцевые
                                "Собрались как-то при полной луне на кладбище главы всех производителей ноутбуков и, совершив жертвоприношения, поклялись никогда не выпускать ноутбуки с матовыми мониторами и полноценными клавиатурами" - актуальная адаптация одного анекдота про нормально открывающиеся упаковки сахара-рафинада :)

                                > на одной выпилили insert, поставив вместо него delete на джве клетки высотой
                                На моей работе есть две такие. Какое странное совпадение...
                                Ответить
                                • > Какое странное совпадение...
                                  Оказалось, что Xom94ok и bormand давно работают вместе, но разговаривали друг с другом только на ГК.
                                  Ответить
                              • >Походу если я и буду покупать ноут - то насру на все ТТХ
                                Просто не буду покупать ноут.
                                А если и буду, подключу отдельную клаву, и отдельный большой монитор.
                                Ответить
                                • > Просто не буду покупать ноут.
                                  Ну я возьму только если жизнь заставит таскать его с собой по командировкам и т.п. Причем, скорее всего, самую бюджетную и дешевую модельку, чтоб не жалко угробить/потерять...

                                  А дома ноут, имхо, нинужен. Гробик под столом в любом случае удобней, шустрее и дешевле.
                                  Ответить
                                  • Ну я вот в уневер с ним хожу - лабы сдать, в героев 3 на лекции поиграть...
                                    Ответить
                                    • cleaned
                                      Ответить
                                      • а ты чем занимаешься в школе?

                                        сидит как то 15летный стетор с мужиками, а они ему после гомосексуальной педофилии и говорят...
                                        Ответить
                                  • >если жизнь заставит таскать его с собой по командировкам и т.п.
                                    Само собой логично использовать ноут для тех целей, для которых он предназначен.
                                    >А дома ноут, имхо, нинужен.
                                    Понятное дело.
                                    Просто уже лет 5 как пошла дичайшая мода брать ноут для дома. И десктопу постоянно пророчат смерть. Это печально.

                                    А вот отчасти отголосок этой моды - хасвелл, с безусловно новыми, революционными концептами, но средненькой встроенной графикой (та что получше и вовсе впаивается в плату), низким энергопотреблением, и при этом небольшим ростом скорости числодробления. Всё это чисто ноутбучное.
                                    Ответить
                                  • > нинужен
                                    * занимает мало места: мало поверхностей для протирания пыли, легко убрать в шкаф и освободить стол, если понадобится место
                                    * в течение дня можно несколько раз переползти в другую комнату
                                    * потребляет меньше энергии (любители игр всегда могут иметь стационарный компьютер, который будет греться только во время игр)

                                    А если привыкнуть к клавиатуре (скажем, выбрать серию ноутбуков, которую ещё будут выпускать - чтобы не переучиваться потом), и если работа/учёба/стиль жизни позволяет, можно таскать везде и всегда иметь актуальное состояние работы, правильно расположенные значки и каталоги, настроенные горячие клавиши, полный контроль над системой, ...

                                    Жду моды на док-станции. Принёс ноутбук, воткнул дома - получил доступ к сети, жёсткий диск с фильмами, монитор, колонки; воткнул на работе - получил три монитора, доступ к базам и клавиатуру; воткнул в лесу - получил чемодан с аккумуляторов на 2 дня.
                                    Ответить
                                    • > занимает мало места
                                      Внезапно, но моник и клава занимают меньше ;) И клаву можно положить как удобно, а моник поставить на удобной для глаз высоте и расстоянии...

                                      Насчет энергопотребления - нынче гробы не так уж и много жрут.

                                      Ах да, ноуты еще и греются и шумят больше из-за хренового теплоотвода. У меня вот на проце комнатная температура почти всегда, и тишина т.к. кулер большой. Разгоняется разве что в самых современных гамах и на конвертации видео.
                                      Ответить
                                      • > греются и шумят
                                        Скоро не будут. Какой-нибудь ультрабук с заниженным хасвелловским i7 при малой загрузке или в режиме экономии энергии скорее всего будет тихим и прохладным.
                                        А вообще, надо искать свой идеал. У меня есть пример ноутбука (до 100Вт), который при 100% загрузки одного ядра шумит и греется, и пример (20-25Вт), когда замечаешь, что что-то тихонько шуршит - а это оказывается кто-то завис и уже час занимает одно-два ядра.
                                        Ответить
                                        • > скорее всего будет тихим и прохладным
                                          Только для ненапряжного потребления лёгкого контента. Пейсбук почитать, фильм посмотреть, пасьянс сложить.
                                          Если требуется значительная вычислительная мощь, то тут и трёх титанов в SLI не хватит, а они ещё не научились физику обманывать.
                                          Ответить
                                  • > А дома ноут, имхо, нинужен. Гробик под столом в любом случае удобней, шустрее и дешевле.
                                    кто мешает иметь и то и то
                                    иногда хочется и сидеть, а иногда - лежать

                                    при этом мой гробик под столом шумит прилично (тем самым жену будит), а ноут в 99% времени даже свой бесшумный кулер не включает
                                    Ответить
                                    • >при этом мой гробик под столом шумит прилично (тем самым жену будит)
                                      А говорилось же - не разгоняй.
                                      Так там же целых 20% на халяву!!!
                                      Ответить
                                      • нет, вовсе по другой причине
                                        блядский жужжащий говнокулер на видеокарте амд
                                        да и всё старье, менять пора
                                        Ответить
                                        • cleaned
                                          Ответить
                                          • 4 года вполне себе срок амортизации, если ты её эксплуатировал без ТО на высоких температурах, ну или с нехорошим БП

                                            моя видюха-пылесос требует полного разбора, чистки и обновления термопасты не реже чем раз в полгода-год, иначе начинает реветь даже при легких нагрузках
                                            Ответить
                                            • > моя видюха-пылесос
                                              А мне с последней видюхой всё-таки повезло - два больших и тихих кулера (twin frozr). На холостом режиме вообще молчат. Да и под нагрузкой звук комфортный, не воющий. Х.з. как оно будет дальше, но первый год продержалось, только пыль выдувал из нее.

                                              А вот предыдущая зато любила повыть... А до нее была ATI'шка с пассивкой, к которой летом приходилось вешать кулер, и которая через год тупо сдохла от тепловой деформации платы.
                                              Ответить
                                              • только водянка
                                                только хардкор

                                                но подводит блядский интел
                                                всё никак не выпустит платформу с ddr4
                                                сейчас бессмысленно покупать новый комп - он будет заведомо старый в ближайшие 2 года
                                                кстати, в т.ч. и видюхи - пусть устаканятся технологии вывода ultrahd 4k на комфортной частоте (а не @24Hz)
                                                Ответить
                                                • > он будет заведомо старый в ближайшие 2 года
                                                  Дык за 3-4 года комп почти всегда превращается в морально устаревшую тыкву, и менять приходится весь комплект из материнки/памяти/проца/видяхи :(

                                                  Апгрейдился я в прошлом году, так что пару лет подождать до ddr4 и новых сокетов - вполне терпимо.
                                                  Ответить
                                                  • > почти всегда превращается в морально устаревшую тыкву
                                                    Более того, чтобы угнаться за прогрессом, нужно бежать как минимум вдвое быстрее.
                                                    Ответить
                            • У меня почти такая же на ноуте за исключением того, что нету правой Гипер, а слева между Гипер и Мета есть еще кнопка для переключения верхнего ряда клавиш (справа всего три кнопки вместо четырех), что в теории должно было бы сделать правый Контрл юзабельным, но я все равно никогда им не пользуюсь. Маленький Ентр приводит к тому, что я иногда нажимаю Шифт вместо. Ну и вообще, плоские клавиатуры - не. Вобщем, пользуюсь отдельной клавиатурой, если есть возможность.

                              http://www.ideastorm.com/servlet/rtaImage?eid=087700000008YKo&feoid=Body& refid=0EM70000000PCSX
                              Ответить
                • >Страуструп в крестах <%/%>/and/or/etc не от хорошей жизни ввел.
                  А это его стиль решения любых крестопроблем языка.
                  Вот у нас есть сишные &&, || а вот есть понятные AND и OR, а чего выбирать? Давайте запилим оба!

                  Это еще Дональд Кнут подметил:
                  Whenever the C++ language designers had two competing ideas as to how they should solve some problem, they said, "OK, we’ll do them both".
                  Ответить
                  • > Это еще Дональд Кнут подметил:

                    Правильно. Разрабам давать выбор? Они же как школота! Сами не знают что делают!!

                    Много языков которые пытались переизобрести синтакс обломались и вымерли.

                    Много языков которые открыто ставили целью уменьшить набор инструментов разраба что бы уменьшить количество ошибок - либо вымерли либо сменили курс.
                    Ответить
                    • Ж.скрипт, Хаскель, Ява - только несколько примеров языков, которые ставили своей целью жестоко ограничить разработчика и тем не менее процветают. Чтобы не возникло сомнений:
                      - ж.скрипт - максимально убогая стандартная библиотека, отсутствие классов (и не надо рассказывать про то, что они там есть, Ейк говорит, что нету) как примеры.
                      - Хаскель - сознательно запрещены побочные эффекты, функции как объекты.
                      - Ява - намерено запрещена прямая работа с памятью, функции и переменные не-методы / поля классов.
                      Ответить
                      • про ж.скрипт и хаскель мнения у меня совсем нету, но вот жаба, извините, в последние релизы "распустилась". блин, даже closure'ы теперь поддерживает.

                        ЗЫ хаскель и побочные эффекты. мне всегда казалось что отсутствие побочных эффектов это черта функциональных языков, а не черта конкретного языка?
                        Ответить
                      • Питон же еще. Маловато там сахарку.
                        Ответить
            • >Какая интересная конструкция, надо бы запомнить.
              Правильно сделали в go - убрали точки с запятой и заставили всегда писать на блоке фигурные скобки .
              Чтобы люди не высирали вот такие "интересные конструкции".
              А потом сиди и думай какой же у неё сайд-эффект или жди когда оно жахнет.
              Ответить
          • Мило, кроме этого проблем не вижу.
            Ответить
            • > Мило, кроме этого проблем не вижу.
              Ну в самом SmartPtr<T> вроде бы все норм.

              А вот в с CallRec::Lock и CallRec::Unlock у них замутно получается. Там потом цикл выгребает все записи в табличке, у которых счетчик обнулился и удаляет их. Х.з., зачем так. Все равно объект после последнего Unlock'а уже не нужен, и можно сразу же его вынести... Хотя, может быть, я какую-то тонкость не понимаю...
              Ответить
            • PascalCase, фи!
              Ответить
      • А самое забавное - этот смартпоинтер совершенно не управляет жизнью CallRec'orda:
        inline void CallRec::Lock()
        {
            PWaitAndSignal lock(m_usedLock);
            ++m_usedCount;
        }
        
        inline void CallRec::Unlock()
        {
            PWaitAndSignal lock(m_usedLock);
            --m_usedCount;
        }
        Ответить

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