Метатабличный / Говнокод #27079 Ссылка на оригинал

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
  61. 61
  62. 62
  63. 63
  64. 64
ont = love.graphics.newFont("/font/RobotoMono-Regular.ttf",14);
love.graphics.setFont(font);

box = {
  draw = false;
  }
function box:cr(d,variant)
  --self.draw = false;
  self.d = d;
  self.var = variant or {};
  table.insert(self.var,">> Quit");
  --table.insert(self.var,">> retry");
  self.str = 0;
  self.v = vector(0,(love.graphics.getHeight()/2)-150);
  self.h = 300;
  self.w = 800;
end

function box:up(dt)
  
end

function box:dr()
  if self.draw then
    love.graphics.setColor(0,0,0);
    love.graphics.rectangle("fill",self.v.x,self.v.y,self.w,self.h);
    love.graphics.setColor(1,1,1);
    love.graphics.print(self.d,self.v.x,self.v.y);
    love.graphics.print(self.str,self.v.x,self.v.y+20);
    for k,v in pairs(self.var) do
      if k == self.str then
        --love.graphics.setColor(1,1,1);
        love.graphics.draw(animmouse.img.RMB,self.v.x+font:getWidth(v),self.v.y+200+((k-1)*20))
        love.graphics.setColor(1,1,0);
      else
        love.graphics.setColor(1,1,1);
      end
      love.graphics.print(v,self.v.x,self.v.y+200+((k-1)*20));
     
    end
  end
end

function box:mw(y)
  if self.draw then
    local lt = #self.var;
    self.str = self.str - y;
    if 1 > self.str then
      self.str = lt;
    elseif lt < self.str then
      self.str = 1;
    end
  end
end

function box:mp(x,y,b)
  if self.draw then
    if b == 2 then
      if self.str == #self.var then
        self.draw = false
      end
    end
  end
end

lalalalallallalalalalallallalalalalallal lalalalalallallalalalalallallalalalalall allalalalalallallalalalalallallalalalala llallalalalalallallalalalalallallalalala lallallalalalalallallalalalalallallalala lalallallalalalalallallalalalalallallala lalalallallalalalalallallalalalalallalla lalalalallallalalalalallallalalalalallal lalalalalallallalalalalallallalalalalall allalalalalallallalalalalallallalalalala llallalalalalallallalalalalallallalalala lallallalalalalallallalalalalallallalala lalallallalalalalallallalalalalallallala lalalallallalalalalallalla

Запостил: 3oJIoTou_xyu 3oJIoTou_xyu, (Updated )

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

      • сказал знаток всех ста сорока девяти мнемоник полезных инструкций асемблера x86, лол
        Ответить
            • А вообще у ссе имена довольно структурированные, можно запомнить какие-то популярные "корни" и "суффиксы" если реально ими пользоваться. Просто у меня задач таких не было чтобы неделями на ссе дрочить. Да и я бы интринсики вместо асма взял, наверное. У них имена нагляднее.
              Ответить
  • Мы не знаем что этот код делает.
    Ответить
        • box же

          в goldenhuilangе так реализуется oop, примерно как в старом JS: делаешь таюлицу, делаешь в не функции, которые (если их правильно пичснуть) получают первым аргументом self ссылку на таблицу
          Ответить
          • на всякий случай пруфану

            Двоеточие (colon) заставляет неявно передавать 'self'.

            Но если вызвать функицю через точку, а не через двоеточие, то можно передать туда другой self.
            Такой финт часто можно проворачивать в скриптушне, но не в жабоёбстве

            local petuz = {name="php developer", iq=14}
            local trot = {name="TORT", iq=1000}
            
            function petuz:hello()
              print("Hello, I am " .. self.name .. " with iq " .. self.iq)
              self.name = "krestuh"
              self.iq = self.iq * 100
            end
            
            
            petuz:hello()
            petuz:hello()
            
            --But you can pass object explicitly
            petuz.hello(trot)
            Ответить
          • Нету ООП тут. Метатаблицы не используются в данном примере.
            Ответить
            • Таблица с методами вполне так объект, даже без оптимизации через метатаблицу, имхо.
              Ответить
              • Я конечно не до конца понимаю что есть ООП. Судя по вики: Объе́ктно-ориенти́рованное программи́рование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования.

                В данном случае это не совсем так как я понимаю. Так как он не будет наследовать пока не перегрузится в метатаблицу или пока не перепишется определенным способом.
                Ответить
                • В русской вики питушня какая-то написана. Классы, наследования — что за хуита?
                  То ли дело «PHP» «английская вики»:
                  Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects",
                  which can contain data and code: data in the form of fields (often known as attributes or properties),
                  and code, in the form of procedures (often known as methods).
                  Ответить
                  • Вот теперь понял. Просто не сращивал с ниже комментарием.
                    наверное ПХПшник и написал про ООП в вики.
                    Ответить
                  • Да, это определение уважает права сишников и луашников.
                    Ответить
                    • и? сишка не является ООП языком даже по английской вики
                      ну и в русской традиции есть разница между объектно-ориентированным и объектным, где у бояр первого сорта есть абсракция, инкапсуляция, наследование и полиморфизм, а у заедушных анскилябр второго только "прототипы"
                      Ответить
                      • Наследование нинужно. А инкапсуляция и полиморфизм и в сишке норм работают.
                        Ответить
                        • нет не норм
                          какой бы ты способ эмуляции ооп в сишке бы не выбрал, у него будет очень много мест, где её можно сломать, как хрустальный хуй
                          в сишке даже статического полиморфизма нет, о чем речь вообще
                          Ответить
                          • >в сишке даже статического полиморфизма нет, о чем речь вообще


                            всмысле нет а макросы
                            Ответить
                • ООП вообще мутно формализовано, и не всегда понятно, что имеется ввиду.

                  Наследование и полиморфизм трудно реализовать без поддержки языка, но оно часто и не нужно.

                  А хранить в структуре данные и указатели на функцию можно хоть на асемблере
                  Ответить
              • Сука:
                Прототипное программирование — стиль объектно-ориентированного программирования, при котором отсутствует понятие класса, а наследование производится путём клонирования существующего экземпляра объекта — прототипа.
                В прототип-ориентированных системах предоставляется два метода создания нового объекта: клонирование существующего объекта, либо создание объекта «с нуля». Для создания объекта с нуля программисту предоставляются синтаксические средства добавления свойств и методов в объект. В дальнейшем, из получившегося объекта может быть получена полная его копия — клон. В процессе клонирования копия наследует все характеристики своего прототипа, но с этого момента она становится самостоятельной и может быть изменена. В некоторых реализациях копии хранят ссылки на объекты-прототипы, делегируя им часть своей функциональности; при этом изменение прототипа может затронуть все его копии.

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

                  TypeScript:
                  const petuh = {
                      name: "zolotoy_grebeshok",
                      iq: 944
                  };


                  Lua
                  local petuh = {
                      name = "zolotoy",
                      iq = 42
                    }


                  Ruby
                  require 'ostruct'
                  
                  petuz = OpenStruct.new
                  petuz.name = "zolotoy"
                  petuz.iq = 42


                  Perl
                  my $petuz = {
                      name => "zolotoy",
                      iq   => 42
                  };
                  bless $petuz;


                  C++..
                  struct
                  	{
                  		std::string name;
                  		int iq;
                  	} foo;
                  	foo.name = "petuz";
                  	foo.iq = 42;
                  Ответить
                  • Без классов не унаследуешь
                    Ответить
                      • У меня сейчас на работе натурально толкают в наш проект ненужную либу, один из плюсов которой в том, что "все сделано на абстрактных классах, достаточно только отнаследоваться"
                        Ответить
                        • Желаю тебе иерарихию из восьми классов. У каждого класса пусть будет по 10 методов, треть их которых -- виртуальные. Каждый наследник переопределяет один родительный метод. Удачи!


                          Питушки, а есть контракт в каком-то языке, говорящий "вот при переопределении родительскогт метода вызови его сначала(или в конце)"?
                          Ответить
                    • а чем это не объект блядь?

                      нет, без шуток
                      давай определение обхъекта
                      Ответить
                      • Чего вы доебались-то?
                        вот вам и инкапустялция, и полиморфизм без всяких классов.

                        Да, наследования нет. Его без мета-таблиц не сделать. А нахуя оно нужно-то?
                        У вас в Go или Rust может наследование есть?
                        Скажете, там ООП нету?
                        local kat =  {
                            naam = "Joop",
                            heeft_honger = true
                          }
                        
                        function kat:heb_avondeten()
                          self.heeft_honger = false
                        end
                        
                        function kat:spreek()
                          print("Ik heet "..self.naam)
                          if self.heeft_honger then
                              print("Ik heb honger")
                          end
                        end
                        
                        function doe_alles(dier)
                            dier:spreek()
                        end
                        
                        doe_alles(kat)
                        kat:heb_avondeten()
                        doe_alles(kat)
                        
                        local hond = {}
                        function hond:spreek()
                            print("fuck u")
                        end
                        
                        doe_alles(hond)
                        Ответить
                        • Ик хейт Маззи. Ик хеб хонгер. Ик хау фан клоккен.
                          Ответить
                          • Я, присиис! Ху веет е дат? Спрейк е нэйдерландц?
                            Ответить
  • Невероятное пришествие! Открыт онлайн сервис, позволяющий хранить заметки!
    Конечно, такое потрясающее новшество не может стоить дешево, потому готовьтесь заплатить $500. Правда, за 5 лет.
    https://roamresearch.com/
    Ответить
      • я не могу ходить в другие комнаты, там стертором пахнет

        Ну Инью, ты не согласен, что это пиздец, нет?
        Ответить
        • Нет, это не пиздец, это IT оффтоп скорее.
          Я храню заметки в телеграме, отправляя сообщения самому себе.
          Ответить
                • А синхронизация с разных устройств?
                  Ответить
                  • У нас на работе это обсуждали недавно

                    Один питух сказал, что он использует org mode, а потом экспортирует это в HTML, и кладет на сайт. А исходники хранит в VCS, и все его зауважали.
                    Ответить
                      • Чего именно не понял?

                        Все свои заметки он ведет в оргмоде в емаксе, хранит всё в вершне контроле.

                        А когда мысли становятся интересными, он эксопртирует их в html
                        https://orgmode.org/manual/HTML-export-commands.html#HTML-export-commands
                        чтобы со всеми поделиться

                        таким образом у него сайт устроен, ну
                        Ответить
                    • Скажи ему, что он поехавший. Я использую орг-моде как менее фторированную версию markdown для документации или работы над какими-то длинными текстами (удобно делать TODO для глав, и синтаксис поприятнее, чем latex, в который он экспортируется), но использовать его как ежедневник — это редкое извращение, ибо синхронизируется он примерно никак. Руками делать three way merge, потому что на телефоне в GNU emacs ты сделал таску "купить молоко", а на компе "позвонить %username%" — очень эффективно, конечно.
                      Ответить
                      • > three way merge

                        Можно не доводить до этого, всё-таки ты один этим файлом пользуешься...

                        В стиме вон вообще нет мержа, но люди с джвумя компами как-то живут же. Просто привыкают вовремя пушить и пуллить облако и не создавать повода для 3-way.
                        Ответить
                          • Ну вот пока unable to sync -- не юзаешь эту игру на другом компе.
                            Ответить
                            • бывает, что игру запускаешь спустя N лет на другой машине, а оно инабле то сунс и инабле то сунс, пока ручками что-то там не удалишь

                              габен просто не заморачивается
                              Ответить
                              • Ну хоть бесплатно. На плойке за облачный сейв ещё и абонентку надо платить. А по-другому вроде никак и не забекапить их.
                                Ответить
                                • ну плойка это вообще автомат по выкачиванию денег

                                  особенно классно, когда играешь в какую-нибудь рокетлигу с кросс-платформенным мультиком, который у тебя на шару, а у кореша за сколько-то там баксов в месяц))
                                  Ответить
                                  • > кросс-платформенным мультиком

                                    Нафиг вообще так делать? Чтобы мышеводы могли унижать гейпадовцев?

                                    З.Ы. А, там машинки. Ну тогда наоборот )))
                                    Ответить
                      • Кстати, кто читал/пробовал/тёк от GTD aka Getting Things Done?

                        Там довольно внятный тайм-менджемент описан
                        Ответить
            • Например, сегодня в 4 утра мне пришла охуительная мысль, и я отправил её себе сообщением.
              Ответить
          • В телеграмме ещё можно сообщения шедулить
            Нахуй этих бумеров с их календарями
            Ответить
            • У меня нет календаря. Я все свои полтора события в неделю и так помню.
              Ответить
              • Я в будильнике иногда их храню. Если прям реально что-то важное и в определенное время.
                Ответить
                • Да, я тоже. Когда яйца варю, чтобы не забыть потушить.
                  Ответить
                  • Мультиварка сама отключает. Ну и рано или поздно желудок напомнит что пора бы поесть.
                    Ответить
                    • яйца в мультиварке варишь? это режим что ли специальный?
                      Ответить
                      • Я все в ней готовлю...

                        Там же время и температуру можно подкрутить.

                        Из режимов вроде только "на пару" особенный т.к. ждёт закипания. А остальные тупо презеты для времени и температуры.
                        Ответить
                                • Тебе бы курсы по рускому изыку окончить.
                                  Ответить
                                  • > курсы по рускому изыку

                                    Бесполезно же... Тут только постоянно писать и читать тексты без ошибок. Иначе с каждым годом всё хуже и хуже.

                                    Именно поэтому меня бесит хуёвая орфография в интернете -- она мне калибровку сбивает.
                                    Ответить
                                    • Тоже бесит. Мой коллега пишет без знаков препинания, даже иногда без точки между предложениями - это пиздец.

                                      Можно в тиндере общаться. Девочки ценят грамотность, и самому стыдно будет писать неправильно.
                                      Ответить
                                      • У меня в чатах забавно иногда получается.

                                        Первое предложение идёт со строчной буквы, ну как принято в чатах. Потом точка и следующее предложение с заглавной. Но у него уже точки нету, если оно последнее.

                                        Какой кодестайл )))

                                        З.Ы. Лол, у Мартывки несколькими комментами ниже прям такой же стиль.
                                        Ответить
                                      • >Девочки ценят грамотность

                                        Разве что если девочка работает учителем младших классов средней школы
                                        Ответить
                                      • Знаки пре пинания и меня бесят когда их нет. Ну именно в тот момент когда нужно сложносочинённое пред ложение раз делить.
                                        Ответить
                          • – Вот то-то и оно… – проговорила, Марго вытирая салфеткой губы, – любишь. А эта блядища этого не ценит!
                            Ответить
                        • ну это уже как-то на глаз приготовление имхо, налил чуть больше или меньше воды, уже не знаешь точно, сколько времени выставлять, придётся следить. с таким же успехом можно и в кастрюльке

                          а чо у тебя за мультиварка кстати?
                          Ответить
                          • > чо у тебя за мультиварка

                            Что-то из свежих редмондов на 5 литров.

                            > уже не знаешь точно

                            Ну что случится с тем же супом или картохой, если ты их на 5 минут дольше поваришь? Какую-нибудь кашу -- да, лучше поточнее отмерять. И рецепты лучше читать именно мультиварочные -- там и объёмы и тайминги есть.

                            Всякие "закиньте в кипящую воду" -- включаешь на паровой режим и занимаешься своими делами пока не бибикнет. Ну или из чайника заливаешь, если совсем торопишься.

                            > с таким же успехом можно и в кастрюльке

                            Тут большой плюс, что термостат, таймер и плотная крышка. Поэтому ничего никуда не утекает и не выкипает.
                            Ответить
                            • с супом и картошкой точно ничего не случится, а для каши моя например вообще сама время отмеряет

                              но речь шла про яйца. если ты хочешь всмятку, то одна лишняя минута уже решает. но для вкрутую конечно разницы тоже нет

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

                              не знаю, может прикол именно моей модели
                              Ответить
                              • > приставать к чаше

                                Ээ, а сколько лет? Может покрытие удрочилось и просто поменять пора?
                                Ответить
                                • два года будет весной. покрытие визуально нормальное, но иногда такое случается. оно не пригорает, а именно как плёнка образовывается
                                  Ответить
            • бумеры с бумажными ежедневниками

              бумеры-инженеры с PalmOS, лол
              Ответить
              • Бумажный норм. Можно пароли хранить. В 2020 никто не подумает их там искать.
                Ответить
                • ну кроме того, многим нравится руками именно чирикать. Бывает так, что без бумажки с карандашем вообще нихуя не понятно
                  Ответить
                  • Ну да, это и быстрее чем на компе.

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

                          мы наверное разных биологических видов
                          Ответить
                      • Если да, то с какого говна ты отправил? Оно в спаме.
                        Ответить
                        • разумеется, оно в спаме: там же плейн текст один, таких писем в реальном мире не бывает
                          Ответить
                          • Не по этому.

                            Я не понял, чё хотел то?
                            Ответить
                            • именно по этому. Письмо плейнтекстом (без html) никто давно уже не делает, а тем более оно из одной строчки

                              ты сказал написать, чтоб открыли хуз, ну я написал
                              хуз из дому работает
                              профит
                              Ответить
          • там же есть saved messages, полагаю, ты про него

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

            а ну вон буткамп уже проспойлерил
            Ответить
            • Да, про него. Раньше это было самому себе, потом переименовали в «saved messages».
              Ответить
            • Не заебался ли ты чревовещать отымени Инкануса, Борманда и некоторых иных твоих фаек? В чем смысл этого спектакля?

              Я зашел за кулисы и мне сразу стало скушно (
              Ответить
    • эвернот как-то подешевле будет (хотя нах там нужен платный план? сказал человек, у которого он когда-то был лол)
      Ответить
  • fun fact: retaining and releasing an NSObject takes ~30 nanoseconds on current gen Intel, and ~6.5 nanoseconds on an M1


    (про яблопроц и кокосовый рефекаунтинг)
    Ответить
    • Эппл прямо как одна страна: теперь умеет производить только впечатление
      Ответить
      • пишут так

        ARM allows you to store some bits in pointers that can be ignored in hardware when dereferenced. On iOS (and presumably macOS), Apple uses some of these bits for reference counting and other object management (e.g. whether the object has a destructor). You can’t do the same on x86-64 (due in part to canonical addresses), so you ether need more memory access or more computation to mask off pointer bits.
        Ответить
        • Хм, так у них там и красно-чёрное дерево можно запилить эффективно!
          Ответить
          • или связанный список, где прямо в указателе хранятся данные
            Ответить
        • Ну кстати а нафига амд потребовало каноничность? Чтобы такие проги потом не посыпались когда выйдет новый проц с шестым уровнем пейджтейблов? Остальным то прогам на это пофиг, они юзают только те диапазоны, которые выдало им ядро.
          Ответить
          • так задел на будущее, как я понимаю: если ты хочешь в будущем иметь 16 экзабайт (или скока там) то ты должен требовать от софта это место не использовать (там единички или нолики вроде)
            Ответить
            • Ну нормальный софт и так не юзает... Что ядро дало, то и ложит в указатель. Т.е. они именно зассали, что кто-то начнет абузить лишние биты.
              Ответить
              • ну вот кто-то бы их абюзнул, а потом не заработал бы на 16 экзабайтах..
                Ответить
                • Ну сделали бы явный флаг "exabyte compatible" на бинаре... Если выебывался -- не ставь. Если не выёбывался -- пересоберись с ним и получи эксабайт.
                  Ответить
                  • Какой AWE :))

                    Тогда пришлось бы в регистре процессора (в CR-чо-то-там) иметь флажок для переключения...

                    Или даже в информации о сегменте, ну где написано 16/32/64 сегмент кода, там же и этот флажок

                    И научить операционку его проставлять
                    Ответить
                    • А ну да, точно, иначе транслировать пойдёт.

                      А этот флажок там и так будет, я думаю. Чтобы не тратить время на лишние трансляции если тебе не надо 6 уровней.
                      Ответить
        • Кстати, на амд64 тоже можно пожертвовать немножко адресного пространства под волшебные биты, если ядро поможет задублировать записи в пейджтейбле. Правда это будет TLB жрать, походу. Адреса то выглядят как разные.

          З.Ы. Можно даже mmap' ом попробовать, кстати.
          Ответить
          • Какой GateA20 ))

            Чому было сразу не сказать: вот в адресе 4 бита, пусть их юзает софт на свое усмотрение (напрмиер)
            Ответить
            • Да надо было жёсткий алаймент сделать. А младшие биты отдать под битоёбство. 4-8 штук на указатель будут без проблем.
              Ответить
              • x86 соснул у ARMа
                архитектурно
                в который раз

                intel/amd пора на помойку
                Ответить
              • Кстати, у ARM младшие биты адреса перехода зарезервированы, потому что инструкции всегда выровнены. На невыровненный адрес перейти нельзя, в отличие от х86.

                Вроде эти младшие биты выбирают набор инструкций (ARM/Thumb).
                Ответить
    • Давай, расскажи мне о своих проблемах при ебле в жопу.
      Ответить
  • – Вот то-то и оно… – проговорила, Марго вытирая салфеткой губы, – любишь. А эта блядища этого не ценит!
    Ответить
  • 3oJIoTou_xyu, какие есть снеки вкусные китайские/японские/корейские?
    Ответить
  • Это так мило звучит всегда: "компания взяла джуна и всему его обучила", ну просто ангелы в этой компании а не руководство - целыми днями учили, уроки с ним делали, домашки проверяли, контрольные писали, экзамены проводили, работать не заставляли. Как было на самом деле: взяли человека на 8-часовой рабочий день, в течении которого он пашет не меньше остальных (естественно с поправкой на знания), а по вечерам, зачастую, он еще и самостоятельно (!!!) учится. И за все это платят ему в разы меньше чем остальным. А когда он набирается опыта и спрашивает про деньги, проще его послать и найти себе другого такого же раба с горящими глазами и желанием войти в айти, который готов носом землю рыть.
    Ответить

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

Из-за тебя ушел bormand, guest!

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


    8