Кресты / Говнокод #14322 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 Xom94ok, (Updated )

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

    • MoonMutex - это объект синхронизации на территории Японии
      Ответить
        • а сорри пропустил что это моно.

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

          ЗЫ создатель моно не гей. он просто передаст.
          Ответить
        • Блин, я боюсь переходить по этой ссылке после стольких минусов. Кто заходил, расскажите пожалуйста, что там.
          Ответить
        • Ты школоло блять ёбаное, ты знаешь, что тут некоторые с работы сайт смотрят?
          Ответить
          • content.gaydemon.com содержит материалы «для взрослых»
            Меня не пустили.
            Ответить
            • > content.gaydemon.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?
                    Ответить
            • > content.gaydemon.com содержит материалы «для взрослых»
              На самом деле впервые сегодня на работе я обрадовался этому сообщению от яндекса, указывающего на мой возраст. Самое интересное, что это сообщение выскакивает в гугло хроме (на самом деле с любого бровсера) на любом компе компании. У кого-нибудь ещё такое есть? Как яндекс палит мой возраст? Срабатывает прямо с адресной строки браузера. В качество поиска всегда юзаю гугл. Я предполагаю, что виноват прокси сервер предприятия, раздающий инет. Но вдруг у кого-то тоже самое и яндекс ему жадничает свою порнуху?
              Ответить
              • на старой работе годами стоял фильтр (потому у меня нет вконтакта и не хочется), и на новой теперь с недавних пор админов высокое руководство тоже заставило
                самодурство-с
                Ответить
              • Вряд ли прокси: http://dns.yandex.ru/

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

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

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

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

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

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

              это как большая красная кнопка- жопой чуешь, что не надо жать, но.... эх
              Ответить
  • 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.
        Ответить
      • Я к тому, что даже если "матёрые" девелоперы не в силах осилить С++, претензии страуструпа не так уж обоснованы...
        P.S. Как же меня бесят пробелы перед скобочками при вызове функций, кто-бы знал...
        Ответить
        • > Как же меня бесят пробелы перед скобочками при вызове функций, кто-бы знал...
          Это чтобы вызов функций был неотличим от if и for.
          Ответить
          • Вот из-за этого Си и относят к write-only языкам. Другое дело — Паскаль, в котором скобочек у if и у for нет.
            Ответить
    • или я не туда зашел или я поехал или те кто пишут стандарт крестов поехали и решили добавить в стандарт крестов 2д библиотеку кари
      Ответить
    • Там же еще до недавнего времени юзали boehm gc вместо чего-то более подходящего для управляемой среды...
      Ответить
      • Самое забавное, что жабовская vm тоже написана на крестах. И никто на это не жалуется.
        Ответить
        • Дык ведь жвм писали умники из sun
          Интересно, кого-то ещё есть осталось желание использовать mono после того, что мы тут увидели?
          Ответить
          • так ведь и не было никого

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

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

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8