1. JavaScript / Говнокод #27431

    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
    function main()
    {
    	let a: [ name: string, age: number ];
    
    	a.name = "Test1";
    
    	print (a.name, " << end (should be value Test1)");
    
    	let b: [ name: string, age: number ] = [ "user", 10.0 ];
    
    	print (b.name, b.age);
    
    	let c: [ user: [ name: string, age: number ], type: number ] = [ [ "user2", 11.0 ], 1.0 ];
    
    	print (c.user.name, c.user.age, c.type);
    	print (c.user.name);
    
    	c.user.name = "Test2";
    
    	print (c.user.name, " << end (should be value Test2)");
    }

    Продолжаем будни говнокомпилятора. а ваш компилятор умеет делать проименнованные таплы (tuples)?

    Запостил: ASD_77, 17 Мая 2021

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

    • и дамп кода https://pastebin.com/MehCvD4f
      Ответить
    • Да, умеет uwu

      Именно поэтому я за «Nim»!
      type
        # type representing a person:
        # A person consists of a name and an age.
        Person = tuple
          name: string
          age: int
        
        # Alternative syntax for an equivalent type.
        PersonX = tuple[name: string, age: int]
        
        # anonymous field syntax
        PersonY = (string, int)
      
      var
        person: Person
        personX: PersonX
        personY: PersonY
      
      person = (name: "Peter", age: 30)
      # Person and PersonX are equivalent
      personX = person
      # Create a tuple with anonymous fields:
      personY = ("Peter", 30)
      Ответить
    • > а ваш компилятор умеет делать проименнованные таплы (tuples)?

      А чем "проименнованные таплы (tuples)" отличаются от структур в Си?
      Ответить
      • В структуру можно методы запихнуть, а в тупл – нет :-)
        Ответить
        • У вас там функции не first-class? Даже в сишке я могу запихать метод в структуру.
          Ответить
          • Тогда это будут не методы, а функции в тупле.
            Ответить
            • А чем функции в тупле отличаются от методов, особенно в тайпскрипте/джаваскрипте?
              Ответить
              • Методы имеют доступ к контексту тупла, типа как «this» в «C++». Функции же в тупле могут как иметь доступ к контексту (если ты туда сам передаёшь тупл), так и не иметь.

                Но мне кажется, что ошибка в моих рассуждениях закралась ещё раньше: в «Plain C» нет методов в структурах без всяких расширений.
                Ответить
                • Первый аргумент можно забиндить на this.
                  Ответить
                  • А можно не биндить. Но, с другой стороны, и статический метод тоже можно сделать...

                    Так чем всё-таки отличается именованный тупл от Сишной структуры?
                    Ответить
                    • Да ничем, если нельзя к полям обращаться по имени.
                      Ответить
                      • Кстати да. Вероятно, в named tuple можно обращаться к полям по индексу, а в сильной структуре... Тоже можно, но там будет сдвиг байтовый, да?

                        Получается, различий нет?
                        Ответить
              • Методы в понимании жс это функции прототипа а значит не копируются между всеми экземплярами
                Ответить
                • Ну это просто соглашение и оптимизация... Вызывающий не отличит эти кейсы друг от друга без hasOwnProperty.
                  Ответить
          • В сишке ты можешь только указатель на функцию запихать, но не саму функцию. Код функции конечно можно в виде непосредственно опкодов процессора хранить в структуре и потом как-нибудь вызывать их, но для этого тебе нужно чтоб в RWX-сегменте аллоцировалась такая питушня.
            Ответить
            • > только указатель на функцию запихать, но не саму функцию

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

                Тут конечно надо определиться с терминологией. "Объявить класс с невиртуальными методами" - это значит "запихнуть метод в структуру" или нет?
                Ответить
                • > "Объявить класс с невиртуальными методами" - это значит "запихнуть метод в структуру" или нет?

                  Именно поэтому я против "методов".

                  А полиморфизм можно и для свободных функций замутить при желании.
                  Ответить
                  • В Python тоже нят някаких "методов"! Есть только свободные функции, завёрнутые в неймспейс класса, и сахар для их вызова <( ̄︶ ̄)>.
                    Ответить
                    • Причём при желании, их можно завернуть, развернуть, поменять... Полная свобода действий.
                      Ответить
                    • И в «Nim» тоже нет методов, хотя есть ключевое слово «method» (для dynamic dispatch, в отличие от static dispatch у функций, объявленных с помощью ключевого слова proc). Там свободные функции, завёрнутые в неймспейс модуля, и сахар для их вызова
                      ~( UзU )~
                      Ответить
    • А нук прыщебляди, загадка вам (ответ уже знаю)

      Долбоёб проебал все пермишены (и всякие суиды, что обидно) в папке /usr, (не важно как) а бекапа у долбоёба нету
      Помоги долбоёбу вернуть пермишены обратно

      Задача решается только на гнусне, бздушники бы соснули
      Ответить
      • Вставить Live CD и от рута поменять всё обратно?
        Ответить
        • руками?
          Ответить
          • Ну да.

            Флагеллантство — движение «бичующихся» (лат. flagellare — «хлестать, сечь, бить, мучить», лат. flagellum — «бич, кнут»), возникшее в XIII веке. Флагелланты в качестве одного из средств умерщвления плоти использовали самобичевание, которое могло быть как публичным, так и келейным.

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


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

                Я бы перенёс на дефолтные утилиты стандартные права каким-нибудь скриптом, а всё остальное вручную бы тыкал, т.к. я анскильный.
                Ответить
                • >каким-нибудь скриптом,
                  каким?

                  направление верно
                  Ответить
                  • Я не знаю баш (((

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

                    Сейчас почитал вот такое:

                    https://m.habr.com/ru/post/469667/

                    Можно сделать chown -R, чтобы поставить владельцем root, а потом копировать из ls -l штуки туда. А ещё потом можно пройтись chmod'ом, чтобы нужные разрешения выставить.

                    Или есть специальный скрипт для отката /bin'ов?
                    Ответить
      • > и всякие суиды

        Пришло время переустановить линукс развернуть бекап...

        Возможно, как-то по метаинфе в пакетах и можно это восстановить, но нафиг?
        Ответить
        • А у меня нет бекапов, я верю в стабильность линукса, и что ничего не сломаю :-)
          Ответить
        • # 
          -attributes-only’
          Copy only the specified attributes of the source file to the destination. If the destination already exists, do not alter its contents. See the --preserve option for controlling which attributes to copy

          https://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html#cp-invocation
          Ответить
          • Какая удобная команда!
            Ответить
          • А где я возьму оригинальный файл с которого надо скопировать атрибуты? Я ведь не обязана помнить, какие файлы с suid, а какие вообще неисполняемые.

            Может быть у apt'а есть какой-нибудь режим, в котором он переустанавливает все пакеты?
            Ответить
            • так поставишь на соседний диск, и оттуда скопируешь же

              aptitude умеет реинсталл по маске, и наверное можно сделать селекшен всех пакетов и всех их reinstall get-aptом, но это не точно

              займет процесс охулиард лет. Проще скопировать все конфиги и переставить
              Это же не пинда, тут конфиги в ожидаемом месте
              Ответить
              • В целом, лучше не проёбывать атрибуты на файлах. Как это вообще можно сделать? Кривой скрипт, который вместо нужного каталога пробежался по всему руту?
                Ответить
                • В целом лучше делать бекапы)

                  Я не знаю как так вышло, это не мой мопед
                  Вроде чел скопировал usr на другую партицию и проебал атрибуты
                  Ответить
                  • > скопировал usr на другую партицию

                    Дык проверять надо перед тем как удалять старую, а не потом пердолиться...
                    Ответить
              • > Это же как в винде — проще переставить, чем чинить

                Починил
                Ответить
                • На винде пермишены такие сложные (бо ACL) и их ломают так часто (бо половина админов их не понимает) что у MS есть даже спецутилита "икаклс" (icacls)

                  Она умеет кучу всего (как это обычно бывает у MS) в том числе и reset permissions
                  Ответить
                  • > "икаклс" (icacls)

                    Похрюкал.
                    Ответить
                    • Зацени сколько много приятных и удобных аббривеатур в Remarks

                      https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/icacls

                      Вообще когда вам говорят, что виндуос это просто, сразу показывайте
                      "O:DAG:DAD:(A;;RPWPCCDCLCRCWOWDSDSW;;;SY)
                      (A;;RPWPCCDCLCRCWOWDSDSW;;;DA)
                      (OA;;CCDC;bf967aba-0de6-11d0-a285-00aa003049e2;;AO)
                      (OA;;CCDC;bf967a9c-0de6-11d0-a285-00aa003049e2;;AO)
                      (OA;;CCDC;6da8a4ff-0e52-11d0-a286-00aa003049e2;;AO)
                      (OA;;CCDC;bf967aa8-0de6-11d0-a285-00aa003049e2;;PO)
                      (A;;RPLCRC;;;AU)S:(AU;SAFA;WDWOSDWPCCDCSW;;;WD)"

                      https://docs.microsoft.com/en-us/windows/win32/secauthz/security-descriptor-string-format
                      Ответить
                      • Жаль в их гуйне нельзя скопировать строчку, которая в итоге получилась, чтобы потом юзать её в скриптах... Там то это вполне удобно редактируется.
                        Ответить
                      • есть же фукция которая это WOWSOCRC графически позволяет редактировать
                        Ответить
                        • А какие-нибудь удобные обёртки для сильного панциря есть? Ну чтобы "дать юзеру Х права Y на файл Z" а не пердолиться с этими буквами.
                          Ответить
                          • Ну в icacls можно более-ли-менее что-то поправить.

                            В панцире есть, но криво

                            Есть кмдлеты для получения ACL (объект класса FileSystemSecurity) и установки его, а для изменения нужно создать новое rule (через ,.net) и установить его в ACL.

                            ACL это колелкция rules, причем в нем есть методы SetAccessRule и AddAccessRule. Первый заменят собой все правила для того же пользователя

                            Потому питушня выглядит примерно так
                            c:\> $acl = Get-Acl C:\Windows
                            c:\> $acl.GetType()
                            // тралялля
                            /// System.Security.AccessControl.FileSystemSecurity
                            c:\> $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Acne\Petuz","FullControl","Deny")
                            c:\> $acl.SetAccessRule($rule) //заменяем все права именно для петуза
                            c:\> $acl | Set-Acl c:\Windows
                            Ответить
                            • > "FullControl","Deny"

                              Какая типизация )))
                              Ответить
                              • Да нет, типизация там норальная
                                Первый параметр это IdentityReference
                                Второй это FileSystemRights

                                просто мощная ракушка умеет их из строки высирать

                                ПРУФ!
                                new-object System.Security.AccessControl.FileSystemAccessRule("AA", "AAA", "AAA")
                                
                                
                                new-object : Cannot convert argument "1", with value: "AAA", for "FileSystemAccessRule" to type "System.Security.AccessControl.FileSystemRights"
                                : "Cannot convert value "AAA" to type "System.Security.AccessControl.FileSystemRights". Error: "Unable to match the identifier name AAA to a val
                                id enumerator name. Specify one of the following enumerator names and try again:
                                ListDirectory, ReadData, WriteData, CreateFiles, CreateDirectories, AppendData, ReadExtendedAttributes, WriteExtendedAttributes, Traverse, Execu
                                teFile, DeleteSubdirectoriesAndFiles, ReadAttributes, WriteAttributes, Write, Delete, ReadPermissions, Read, ReadAndExecute, Modify, ChangePermi
                                ssions, TakeOwnership, Synchronize, FullControl""
                                Ответить
                                • In instantiation of new-object
                                                     new-object System.Security.AccessControl.FileSystemAccessRule("AA", "AAA", "AAA")
                                  required from here ^^^^^^^^^^
                                  Cannot convert argument "1", with value: "AAA", for "FileSystemAccessRule"
                                  to type "System.Security.AccessControl.FileSystemRights"
                                  : "Cannot convert value "AAA" to type "System.Security.AccessControl.FileSystemRights".
                                  Error: "Unable to match the identifier name AAA to a val
                                  id enumerator name. Specify one of the following enumerator names and try again:
                                  ListDirectory, ReadData, WriteData, CreateFiles, CreateDirectories, AppendData,
                                  ReadExtendedAttributes, WriteExtendedAttributes, Traverse, Execu
                                  teFile, DeleteSubdirectoriesAndFiles, ReadAttributes, WriteAttributes, Write,
                                  Delete, ReadPermissions, Read, ReadAndExecute, Modify, ChangePermi
                                  ssions, TakeOwnership, Synchronize, FullControl""

                                  Ответить
                          • не знаю, у меня от него изжога
                            каждый раз, стоит только запустить
                            (и дождаться готовности, лол)
                            Ответить
                          • собственно вот он
                            https://www.codeproject.com/Articles/10811/The-Windows-Access-Control-Model-Part-4

                            можно конечно на GRUNT-образный синтаксис переделать, но долго сидеть придется
                            Ответить
                        • Показаны результаты по запросу WOWCIRCLE
                          Не найдено результатов по запросу WOWSOCRC
                          WoW Circle: Комплекс серверов
                          Ответить
    • MS поднатужился, и попытался перейти на Новую ОС (выкинув старое говно и загнав Сём с их XP в эмуляторы, как сделал когда-то ебло) но обосрался

      https://microsoft.fandom.com/wiki/Windows_10X
      Ответить
      • > загнав Сём с их XP в эмуляторы
        иронично, что ты сам дудишь в вистлер

        > выкинув старое говно
        опять? никогда такого не будет, Чен как боженька расписал почему
        Ответить
    • Анекдоты -- в жизнь!

      Coursera Labs supports in-browser Visual Studio Code. This allows learners to access a development environment without having to set it up on their local machine. The environments support 14 programming languages.
      Ответить
      • https://www.youtube.com/watch?v=ApsDtKWE8ik

        (o´∀`o)
        Ответить
      • Ахуенно же
        Ответить
      • нихуя непонятно, кто будет исполнять эти лабы из которых добрая треть - тяжеловесный матлаб и еще 20% R
        Ответить
        • Надеюсь, пользователи винды под видом телеметрии. А ещё хочу, чтобы это не отключалось.
          Ответить

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