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

    +16

    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
    // https://github.com/mono/moon/blob/master/src/list.h#L87
    
    class Queue {
    protected:
            MoonMutex lock;
            List *list;
            
    public:
            Queue ();
            ~Queue ();
            
            // convenience properties
            bool IsEmpty ();
            int Length ();
            
            // convenience methods
            void Clear (bool freeNodes);
            
            void Push (List::Node *node);
            List::Node *Pop ();
            
            void Lock ();
            void Unlock ();
            
            // accessing the internal linked list directly requires manual Locking/Unlocking.
            List *LinkedList ();
    
            // copies the queue and empties the original
            void  MoveTo (Queue &queue);
    };
    
    // https://github.com/mono/moon/blob/master/src/list.cpp#L391
    
    Queue::Queue ()
      : lock (true)
    {
            list = new List ();
    }
    
    int
    Queue::Length ()
    {
            int length;
            
            Lock ();
            length = list->Length ();
            Unlock ();
            
            return length;
    }
    
    void
    Queue::MoveTo (Queue &queue)
    {
            List::Node *node;
            while ((node = list->First ())) {
                    list->Unlink (node);
                    queue.Push (node);
            }
    }

    Во имя луны!

    Запостил: Xom94ok, 07 Января 2014

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

    • MoonMutex работает на moon logic?
      Ответить
      • MoonMutex - это объект синхронизации на территории Японии
        Ответить
      • "moon" это слэнг для "жопа".
        Ответить
        • ты намекаешь на гейство создателя моно?
          Ответить
          • а сорри пропустил что это моно.

            тогда это скорее всего отсылка на "moon shine" - самогон.

            ЗЫ создатель моно не гей. он просто передаст.
            Ответить
      • Сиськи покажешь?
        Ответить
        • показать все, что скрыто>>Сиськи покажешь?
          http://u.to/p9G7BQ
          Ответить
          • Блин, я боюсь переходить по этой ссылке после стольких минусов. Кто заходил, расскажите пожалуйста, что там.
            Ответить
          • Ты школоло блять ёбаное, ты знаешь, что тут некоторые с работы сайт смотрят?
            Ответить
            • content.gaydemon.com содержит материалы «для взрослых»
              Меня не пустили.
              Ответить
              • > content.gaydemon.com
                А, опять так любимые стертором пидорасы...

                Вот за что ненавижу сокращатели урлов - так за то, что они сразу редиректят на целевую страницу. Даже посмотреть на урл не дают перед переходом.
                Ответить
                • http://wheredoesthislinkgo.com/

                  Справился только этот сервис. Остальные разворачивалки говорят, что редиректов нет.
                  Ответить
                  • Да на самом деле можно курлом, мне просто лень было.
                    $ curl --max-redirs 0 http://u.to/p9G7BQ
                    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
                    <HTML><HEAD>
                    <TITLE>302 Found</TITLE>
                    </HEAD><BODY>
                    <H1>Found</H1>
                    The document has moved <A HREF="http://content.gaydemon.com/pictures/a/f/afd0b2c9e2bc8a6f6641dedaa4ec35ef.jpg">here</A>.<P>
                    </BODY></HTML>
                    Ну и если -v дать, то видно, что
                    < Location: http://content.gaydemon.com/pictures/a/f/afd0b2c9e2bc8a6f6641dedaa4ec35ef.jpg
                    Ответить
                    • А ведь правда, отдаёт 302 и Location. Почему же другие экспандеры не хотят разворачивать?

                      P.S. В Опере: http://u.to/ → «Настройки для сайта» → «Сеть» → снимаем галочку «Включить автоматическое перенаправление». Результат: http://imgur.com/ZA85gNi

                      Правда, придётся все сокращалки так добавлять.
                      Ответить
                    • Стоп! А ответ 302 вроде предполагает отсутствие тела. Зачем там этот HTML?
                      Ответить
                  • *trollface.jpg*
                    Ответить
              • > content.gaydemon.com содержит материалы «для взрослых»
                На самом деле впервые сегодня на работе я обрадовался этому сообщению от яндекса, указывающего на мой возраст. Самое интересное, что это сообщение выскакивает в гугло хроме (на самом деле с любого бровсера) на любом компе компании. У кого-нибудь ещё такое есть? Как яндекс палит мой возраст? Срабатывает прямо с адресной строки браузера. В качество поиска всегда юзаю гугл. Я предполагаю, что виноват прокси сервер предприятия, раздающий инет. Но вдруг у кого-то тоже самое и яндекс ему жадничает свою порнуху?
                Ответить
                • на старой работе годами стоял фильтр (потому у меня нет вконтакта и не хочется), и на новой теперь с недавних пор админов высокое руководство тоже заставило
                  самодурство-с
                  Ответить
                • Вряд ли прокси: http://dns.yandex.ru/

                  У Яндекса три ДНС:
                  1. Вообще без фильтра (разрешает даже запрещённые Роскомнадзором адреса).
                  2. С фильтром вредоносных сайтов.
                  3. С фильтром вредоносных сайтов и порнухи.

                  Скорее всего, именно третий сервер и выбран в качестве ДНС.

                  P.S. Сейчас пользуюсь тем, который без фильтрации. Работает быстрее других ДНС и показывает даже нигров.
                  Ответить
            • Тарас, ну хоть ты расскажи, что там.
              Ответить
            • У тебя шеф - этот нигер?
              Ответить
              • Что там изображено то? Хватит меня интриговать, а то ведь зайду.
                Ответить
                • Нигер, который почти снял труселя.
                  Ответить
                  • Вот мне интересно, зачем стертор посещает этот сайт? Уже которую ссылку на него кидает. Я искренне надеюсь, что он всего лишь троллит тамошних обитателей...
                    Ответить
                    • Троллит. И они его троллят. Но ему больше нравится когда его троллят. Поэтому он Обучает делфи, тех кто согласен его троллить.

                      Крик души...
                      Ответить
                    • Как что-то плохое
                      Ответить
                      • А что хорошего?
                        Ответить
                        • Ну, например, если Стертор пидрила, то можно убить двух зайцев. Держишься подальше от пидрил, и автоматически снижаешь вероятность встречи со Стертором в реале.
                          Ответить
                          • А как ты определишь, кто пидор а кто нет? У нас в медшарашке было полно геев/лесбиянок - в основном приезжих (медучеба во Владике дешевле), и даже я не мог зачастую отличить геев от негевв, пока они мне сами об этом не говорили. Так какие мыслишки?
                            Ответить
                            • они не были лесбиянками, они так говорили, что бы ты отстал)
                              Ответить
                              • Опять ты спешишь с выводами, мой юный друг Кегги.
                                Ответить
                            • > У нас в медшарашке
                              Специальность прикладная информатика в медицине? Все равно что гуманитарий в IT.

                              > У нас было полно геев/лесбиянок
                              В медпарашке? Не отвечай, не хочу знать пикантные подробности.
                              Ответить
                              • >> Все равно что гуманитарий в IT.
                                Так и есть, к сожалению. Я как бы для этого и пришел сюда, послушать, о чем бают настоящие кодеры. По крайней мере местные порядочны и имеют опыт, в отличие от обитателей форумов, черт бы их подрал.
                                Ответить
                                • Кстати соглашусь. На гейдеве сидят недоразвитые. Говорю бред. Мне даже никто не возразит. Раньше хоть пытались спорить. Ушел оттуда. Унылый форум со скучными петросянами.
                                  Ответить
                            • Геев не отличить, а пидоров - можно.
                              Ответить
                              • Толстый намек?
                                http://pazitiff.info/uploads/posts/2009-11/1259340928_m1233911812_92341.jpg
                                Ответить
                    • Надюша в расстрельном списке крайняя.
                      Ответить
                • пара сообщений вверх

                  kegdan 43 минуты назад # +1
                  Самец нигры, снимающий трусы
                  Ответить
            • >> ты знаешь, что тут некоторые с работы сайт смотрят?
              Меня не ебет, кто откуда и как что смотрит. Я бы понимал, если бы я запостил картинку - но ссылка же. Я никого не заставлял ее открывать.
              Берите, блин, с Борманда пример
              Ответить
              • > но ссылка же
                Да еще и на ссылка на сокращатель, которые я стараюсь никогда не открывать.
                Ответить
                • Нужно всегда быть готовым к неожиданностям. Всем конечно похуй, но надо сказать, что из я из солидарности выбрал еще более-менее пристойные "сиськи". Были и откровеннее.
                  Ответить
                  • И много ты посмотрел, прежде чем выбрал?
                    Ответить
                    • Достаточно.
                      Ответить
                      • А после того как кинул ссыль тоже смотрел? ну на будующее
                        Ответить
                        • Нет, сразу закрыл и добавил 127.0.0.1 gaydemon.com в j:\windows\system32\drivers\etc\hosts
                          Ответить
                          • > добавил 127.0.0.1 gaydemon.com в <...> hosts
                            А перед этим выкачал его и выложил у себя на локалхосте?
                            Ответить
                            • Да нет, инет слабый. *trollface.jpg*
                              Ответить
                              • Ну вот поэтому ты его и выкачал где-нибудь в интернет клубе и выложил себе на локалхост. Чтобы нигры быстрее грузились.
                                Ответить
                                • Это скучно, пошло и никому не интересно. Петросян съел свой галстук.
                                  Ответить
                            • Кстати, Борманд, как загнать свой комп под прокси-сервер? За это платят?
                              Ответить
                • [режим шутника]
                  Сокращатель хуя?
                  [/режим шутника]
                  Ответить
              • >>но ссылка же.

                это как большая красная кнопка- жопой чуешь, что не надо жать, но.... эх
                Ответить
    • void
      ArrayList::SetCapacity (int capacity)
      {
              if (capacity == size)
                      return;
              
              array = (void **) g_realloc (array, sizeof (void *) * capacity);
              
              for (int i = size; i < capacity; i++)
                      array [i] = NULL; // Прячем голову в песок NULL ?
              size = capacity;
      }

      Тогда
      arrList.SetCapacity( arrList.GetCapacity() );
      - способ "очистки" списка при capacity != size?
      Ответить
      • > способ "очистки" списка при capacity != size?
        Маловероятно. Что-то мне намекает, что GetCapacity() возвращает именно size :)

        > Прячем голову в песок NULL
        Вот про это не понял, хоть убей. Это ж банальное забивание нулями хвоста массива [size; capacity) после увеличения его размера. Старые элементы [0; size) оно ну никак не заденет.

        При уменьшении же размера этот цикл вообще ничего не делает. Просто realloc отхерачивает хвост массива, и вся надежда на GC, который там должен быть, ибо моно.
        Ответить
        • >> Маловероятно. Что-то мне намекает, что GetCapacity() возвращает именно size :)

          я чуть не заплакал.

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

          а не проще ли вставить один нул и вайлить до него? Хоть от контектса зависит - если 100000 и 5 добавили - не лучше. А если наоборот - лучше
          Ответить
          • > вставить один нул и вайлить до него
            Напиши кодом, плиз. Не понял мысль.
            Ответить
            • Псевдокод
              i = things.size;
              things.size += 10000;
              things[i]= SpecialThing

              а проход по коллекции
              for(i=0;thing[i]!=SpecialThing; i++){...}


              хотя это довольно специфично, в основном проще все нулами забить, да. туплю
              Ответить
              • Что за пиздец. А кто сказал, что в первых же элементах массива не встретится этот SpecialThing? Доэкономишься на спичках же... Да и я не понял, зачем заменять аккуратный цикл по новым элементам на странную хрень, бегущую по всем ;)

                Если уж тот цикл на что-то заменять, так на memset.
                Ответить
                • Я вообще не понял, зачем увеличивать размер и забивать нулами. это бесполезное действие. если уж увеличиваем размер - значит будет запись . Увеличили - записали. Чем забивать 10000 елементов нулами, проще уж смещение передать. ну или что то такое.

                  А по поводу псевдокода - имелось в виду следующее
                  Мы забиваем специальное значение, что бы знать, где должна быть запись, а где перепись. Я подразумевел такую задачу - мы увеличили массив, а потом делаем некоторый проход, который модифицирует данные.

                  i=0
                  for(;thing[i]!=SpecialThing;i++){/*Модификация */}
                  for(; i<things.size; i++){/*запись нового значения*/}

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

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

                    Там есть свойства Capacity и Count, как и положено вменяемому ArrayList'у. Вот только приватная переменная для Capacity какого-то хуя почему-то называется... size. Вот в этом косяке с именованием и заключается говно.

                    А зануляют поди из-за того, что там есть GC. Сборщику очень не понравится мусор в конце массива, который остался там после realloc. Поэтому хоть эти элементы [Count; Capacity) никому не нужны, но заполнить их нулями придется.
                    Ответить
                    • А чеж тогда автоинициализации нет?)

                      А, ну да, GC же опционально включается.
                      Ответить
                      • > А чеж тогда автоинициализации нет?)
                        Скорее всего, чтобы низкоуровневые функции, типа этой, могли занулять только часть буфера, а остальное сразу заполнять полезными данными.
                        Ответить
                        • ну да, по сути такие функции и используются вместо автозаполнения
                          Ответить
          • не проще ли не вставлять ничего и перебирать до size() невключительно?
            Ответить
        • > Вот про это не понял, хоть убей
          Извиняюсь - спросонья принял i=size за i=0.
          Ответить
    • We built Moonlight in C++ for all the wrong reasons ("better performance", "memory usage") and was a decision we came to regret. Not only were the reasons wrong, it is not clear we got any performance benefit and it is clear that we did worse with memory usage.
      http://tirania.org/blog/archive/2014/Jan-04.html
      Ответить
      • Они не осилили С++.
        Ответить
        • Я к тому, что даже если "матёрые" девелоперы не в силах осилить С++, претензии страуструпа не так уж обоснованы...
          P.S. Как же меня бесят пробелы перед скобочками при вызове функций, кто-бы знал...
          Ответить
          • > Как же меня бесят пробелы перед скобочками при вызове функций, кто-бы знал...
            Это чтобы вызов функций был неотличим от if и for.
            Ответить
            • Вот из-за этого Си и относят к write-only языкам. Другое дело — Паскаль, в котором скобочек у if и у for нет.
              Ответить
      • или я не туда зашел или я поехал или те кто пишут стандарт крестов поехали и решили добавить в стандарт крестов 2д библиотеку кари
        Ответить
      • Там же еще до недавнего времени юзали boehm gc вместо чего-то более подходящего для управляемой среды...
        Ответить
      • На этот же пост сослался некий итальянец несколько дней назад:
        http://cpp-today.blogspot.it/2014/01/a-bad-workman-always-blames-his-tools.html
        Ответить
        • Самое забавное, что жабовская vm тоже написана на крестах. И никто на это не жалуется.
          Ответить
          • Дык ведь жвм писали умники из sun
            Интересно, кого-то ещё есть осталось желание использовать mono после того, что мы тут увидели?
            Ответить
            • так ведь и не было никого

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

                А вообще может быть его и допилят. Их же сейчас ксамариновцы купили, и получают с него профит.
                Ответить
            • Пусть мой голос маленький, но я за моно.
              В треде - маленький кусочек moonlight, реализации silverlight, который не нужен никому. Зато .NET + C# с их огромной библиотекой, сахарным синтаксисом и годной IDE под мастдай создают прямо-таки райский климат для утилитарного говнокодерства. А то, что собранное под виндой хозяйство можно с некоторой вероятностью запустить под *nix - только в плюс.
              Ответить
              • > маленький кусочек moonlight, реализации silverlight
                Да, я понял, что это не сам моно. Пытался как-то пользоваться этим мунлайтом, т.к. в одной фирме, где я работал, аппликуха для таймтрекинга активно использовала silverlight. Естественно, мой план был обречён на провал - фуррифокс-мунлайт-плагин крэшился при открытии странички. Теперь-то я понимаю, почему.
                Ответить
                • Блин, а я ещё думал что моно хоть как-то на уровне держится. Печально. Хорошо хоть им никогда не приходилось пользоваться.
                  Ответить
            • В нем SSE есть.
              Ответить
              • В хотспоте JIT тоже умеет. Но его хрен уговоришь, ибо штатных векторизуемых типов нет :)
                Ответить
            • Читал в комп журнале историю портирования софта на моно. Таки да, заодно латали само моно.
              Ответить
          • Если верить Мигелю, то moonlight был написан за три недели людьми, которые привыкли к си, оттого и качество соответствующее. И вообще, Java тормозит, от нее ничего не ожидают и поэтому никто не жалуется.
            Ответить

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