ЙажаСценарий / Говнокод #27431 Ссылка на оригинал

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
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 ASD_77, (Updated )

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

  • Да, умеет 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» нет методов в структурах без всяких расширений.
              Ответить
                • А можно не биндить. Но, с другой стороны, и статический метод тоже можно сделать...

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

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

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

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

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

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

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

    Задача решается только на гнусне, бздушники бы соснули
    Ответить
        • Ну да.

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                Она умеет кучу всего (как это обычно бывает у MS) в том числе и reset permissions
                Ответить
                  • Зацени сколько много приятных и удобных аббривеатур в 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
                          Ответить
                            • Да нет, типизация там норальная
                              Первый параметр это 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""
                                Ответить
                        • не знаю, у меня от него изжога
                          каждый раз, стоит только запустить
                          (и дождаться готовности, лол)
                          Ответить
                      • Показаны результаты по запросу WOWCIRCLE
                        Не найдено результатов по запросу WOWSOCRC
                        WoW Circle: Комплекс серверов
                        Ответить
    • > загнав Сём с их 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.
    Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

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


    8