Подборка полезных слайдов от Джулии Эванс

Автор оригинала: Julia Evans
  • Перевод
Перевели новую порцию слайдов. Права доступа в Unix, файловые дескрипторы, потоки, магия proc. И на закуску пара советов о том, как общаться, когда ты не согласен. А вдруг пригодятся =)





















PDF-версию забирайте тут

Все комиксы с переводами в нашем блоге.

Заглядывайте в наши группы в ВКонтакте и Фейсбук, там много интересного.
FirstVDS / FirstDEDIC
99,63
Компания
Поделиться публикацией

Комментарии 42

    –16
    За труд конечно респект, но, как говорил один небезызвестный докладчик, подобные статьи идут только во вред. ИМХО такие слайды люди, работающие с командной строкой, просто обязаны понимать и без перевода. И знания английского должны быть хотя бы такого уровня, чтобы их понимать.
      +2
      А люди, пьющие воду, просто обязаны уметь плавать. И кому помешало образование «по мнению небезызвесного докладчика»? Этот докладчик это вы?
        –3
        Насчет воды и плавания — дело личное. А любой, пишущий код или админящий просто обязан знать английский язык на уровне чтения документации, комментариев в коде, системных сообщений и уж точно подобных комиксообразых слайдов :)
        Докладчик — Егор Бугаенко — ссылка на его доклад
          +8
          Эта фамилия уже синоним слов «сектант» и «мракобес».
            –2
            Можете обосновать почему? ИМХО в его докладе все тезисы обоснованы и в общем-то реалистичны.
              +1
              Мракобесом его делают вовсе не обоснованные и реалистичные тезисы, а совсем наоборот — не обоснованные и не реалистичные, коих там пруд-пруди. Он как-то вел @backendsecret и проявил себя во всей красе.
                –1
                Какие, например? Мне просто действительно интересно, потому что с его докладом согласен процентов на 90 — сначала деплой, потом все остальное, наличие пет-проекта, знание английского, что тикеты желательно писать, ну и по возможности контрибьютить в Open Source. Не обязательно, кстати, кодом. Можно переводы делать или баг репорты грамотные писать.
                  0
                  Я за ним не конспектирую же, поэтому какие тут примеры? Но достаточно вспомнить ту пирамиду смерти из декораторов, которой он решал практически любые проблемы и почему-то называл это элегантным :)
                    0
                    Answer answer = new Answer( new Question( new AskingPerson( new Person( new Nickname( "smarthomeblog" ))),
                                                              new Place( new WebSite(new HTTPRequest(new URI("https://habr.com/ru/company/first/blog/461251/#comment_20436593"))))                                          
                                                              ),
                                                new Text( new Encoding( "UTF-8"), new PlainText("Because objects must be elegant")),
                                                new ProofLink( new WebSite(new HTTPRequest(new URI("https://www.youtube.com/watch?v=lfdAwl3-X_c")))));

                    P.S. С упомянутым вами докладом частично согласен, но точно менее чем на 90%, но его обсуждение тут недавно было.
                      0
                      Это упомянутая пирамида смерти из декораторов? Ну если автору это помогает писать более эффективные приложения, то почему бы и нет :) Я просто вырос на Перле, где один из основных принципов — «Есть больше одного способа сделать это» :)
                        0
                        Ну если автору это помогает писать более эффективные приложения, то почему бы и нет :)

                        Автор такой подход не просто применяет, он его пропагандирует, откуда и берется «мракобес». Некоторые ему верят и следуют за его идеями — отсюда «сектант».
                      0
                      Можно переводы делать

                      Например с английского на русский?
                0
                Я знаю английский. Но мне очень приятно читать эти стрипы на русском. Спасибо художнику-переводчику.
                  0
                  Отрадно. Значит не зря старался ;)
              +4
              Мне этот комент напомнил как циска не хотела делать Auto MDI-X в своих устройствах. Типа тот, кто сетями занимается, должен знать как провода подключать.
                0
                То есть Вы не согласны, что программеры и админы должны понимать системные сообщения и читать доку и коменты на английском? Скажу сразу, я не эксперт в английском. Сам знаю его весьма посредственно — на уровне чтения документации. И с удовольствием читаю переводы на Хабре разнообразных статей. Но этот конкретный перевод считаю совершенно бесполезным. А где-то даже вредным. Ибо комиксы можно и так понять. На то они и комиксами сделаны :)
                  0
                  Я специализируюсь не на *nix, и мог бы без этих знаний и дальше обойтись, так как не профильно. Но знание про /proc определённо помогут при настройке сторонних инструментов, сэкономят пол часика. Читать мануалы по *nix не готов, так как в моём случае это не окупит потраченного на них времени. А слайды лаконичные, о самом главном и почти развлечение. Сисадминам конечно чтение мануалов по *nix обязательно, но я фронтенд-программист и читаю другие мануалы (W3, MDN, MSDN), которые не читают сисадмины. Считаю статью полезной.
              +3
              TCP и UDP в картинке сокетов перепутаны

              Что такое юникс треды понятнее не стало.
                +1
                Про TCP и UDP меня тоже изначально удивило, но у Джулии так в оригинале:
                drawings.jvns.ca/drawings/unixdomain.jpeg
                Хоть это и немного контринтуитивно, Джулия права.
                Datagram в UDP вполне присутствует. Если заглянуть в man 7 unix и man 7 udp — там, хоть и не очень очевидно, но объясняется, что stream socket будет работать с потоком байт. Если проще, если в stream socket отправить два сообщения содержащие данные «123» и «456», то на обратной стороне сокета вы будете последовательно получать 1, 2, 3, 4, 5, 6.
                В datagram socket же вы отправляете сообщения с заданным размером ценной нагрузки — кинете туда «123» и «456» и на обратной стороне сокета вы никогда не увидите «1» или «56», только «123» и «456».
                  0
                  В описании BSD Sockets четко описан type:
                  SOCK_STREAM — надёжная потокоориентированная служба (TCP) (сервис) или потоковый сокет
                  SOCK_DGRAM — служба датаграмм (UDP) или датаграммный сокет
                  0
                  а что не так? вроде все правильно
                  +5
                  Некоторые фразы по-русски выглядят странновато:
                  • «записать X к адресу Y» — правильнее «по адресу»;
                  • в /proc/PID/maps слово «map» обычно переводят как «отображение», а не «карта»;
                  • «reordering» канонично переводить как «переупорядочивание».

                  Еще (это уж к оригиналу) правильнее сказать, что «110 в двоичной — это 6 в восьмеричной», и вообще у «chmod 644» аргумент — это восьмеричное число (и даже не только лишь набор восьмеричных цифр).
                    +2
                    одному мне вспомнилась книжка из детства «Энциклопедия проффесора Фортрана»?
                      0
                      Почему ничего нет про абстрактные unix сокеты, которые как раз то, что нужно юзать под Linux, вместо этой возни с файлами. И про permissions на unix сокеты, тоже так себе штука, тк они много где игнорируются «POSIX does not make any statement about the effect of the permissions on a socket file» из man-а. Такие себе слайды.
                        0
                        А можно пруф про то, где они «игнорируются»?
                        Нет такого даже близко, тем более в Linux, не вводите пожалуйста людей в заблуждение.
                        Мне кажется вы несколько ошиблись с переводом.

                        Вот полный текст той части мана, откуда вы взяли эту фразу:
                        Pathname socket ownership and permissions.
                        In the Linux implementation, pathname sockets honor the permissions
                        of the directory they are in. Creation of a new socket fails if the
                        process does not have write and search (execute) permission on the
                        directory in which the socket is created.

                        On Linux, connecting to a stream socket object requires write permis‐
                        sion on that socket; sending a datagram to a datagram socket likewise
                        requires write permission on that socket. POSIX does not make any
                        statement about the effect of the permissions on a socket file, and
                        on some systems (e.g., older BSDs), the socket permissions are
                        ignored. Portable programs should not rely on this feature for secu‐
                        rity.

                        When creating a new socket, the owner and group of the socket file
                        are set according to the usual rules. The socket file has all per‐
                        missions enabled, other than those that are turned off by the process
                        umask(2).

                        The owner, group, and permissions of a pathname socket can be changed
                        (using chown(2) and chmod(2)).

                        Вольный перевод примерно такой (выделил жирным фразу, которую вы процитировали):

                        В реализации для Linux, pathname сокеты обладают теми же правами, что и директория, где они находятся. Создание новых сокетов пофейлится, если у процесса нет прав на запись и выполнение (r+w) в директории где создается сокет.

                        В Linux, подключение к stream socket объектам требует прав на запись в этот сокет. Отправка datagram в сокет так же требует прав на запись в этот сокет. POSIX (как стандарт) никак не утверждает обработку прав на сокеты и некоторые системы (вроде старых BSD) игнорируют права, выставленные на сокет. Переносимые между ОС программы не должны полагаться на эту фичу для безопасности.

                        Когда создается новый сокет, владелец и группа сокет-файла выставляются так же, как обычно. У файла сокета включены все привелегии, если только они явно не выключены с применением umask.

                        Владелец, группа и права на pathname сокет могут быть настроены через chwon и chmod.
                          0
                          Ну вы же сами выделили тот кусок «некоторые системы (вроде старых BSD) игнорируют права», то есть permissions не часть POSIX стандарта, то есть это вообще не переносимая штука, так же как и абстрактные сокеты.
                          В Linux работает, я и не увтерждал обратного, а только сказал, что POSIX ничего не говорит про это и это легко может не заработать под BSD или Mac os.
                        +4

                        Классическая ошибка с правами доступа. Владелец, группа и ОСТАЛЬНЫЕ (others). В остальные не входят владелец и группа.

                          +1
                          Как и владелец не входит в группу. Был сильно удивлен, нечаянно выдав на файл права 466 вместо 664
                          –8
                          Я не понял: это все еще Хабр или уже Cosmo?
                            +1
                            А откуда вы знаете, как выглядит Cosmo?
                            0
                            Не особо разбираюсь в том что нарисовано (не знаток Unix), но очень нравится сам формат. Гуглить «скетчноутинг». Недавно прочитал Майкла Роуди и проникся, теперь все свои записи/конспекты стараюсь вести в таком формате — на бумаге от руки и с картинками, и очень доволен. Попытки делать электронные конспекты забыл как страшный сон.
                              –1
                              Крайне хреновый шрифт, ничего нельзя разобрать.
                                0

                                Странно, мне всегда казалось, что число в chmod надо указывать в "форсированном восьмиричном" формате (0644, 0600), так как иначе он воспринимает число в десятиричном формате. Или за те 15 лет, что я пользуюсь линуксом, это место уже исправили?

                                  0
                                  Пользуюсь linux'ом чуть менее 10 лет, и всегда в man было написано следующее: «A numeric mode is from one to four octal digits (0-7), derived by adding up the bits with values 4, 2, and 1. Any omitted digits are assumed to be leading zeros»
                                    0
                                    На самом деле, первый 0 это для специальных битов — suid, sgid, sticky bit. То есть, прописывая 0, вы их сбрасываете. Это можно делать, но, как упомянули комментарием выше, совершенно необязательно.
                                    0
                                    110 в бинарной системе исчисления равняется 6
                                    В русском языке это называется «двоичной системой счисления» (не исчисления).
                                      0
                                      Внесли корректировку в формулировку. Спасибо за замечание!
                                      0
                                      Красочно и понятно, можно распечатать и повесить на стенку)
                                        0
                                        Переводить надо всё, нужно рушить ВСЕ стены между знаниями.
                                        Однако у меня претензия к шрифту. Почему не Dat Fest Comic?
                                          +1
                                          Дизайнер очень ответственно подошёл к задаче и сделал специальный новый шрифт под рукописный шрифт Джулии. Вышло очень похоже :)
                                            0
                                            Ладно
                                          0
                                          В «Права доступа ...» про директории сильно смутило пересечение:

                                          w = создавать, менять и удалять файлы и папки
                                          x = переходить по директориям (cd) и изменять файлы

                                          В оригинале звучит как-то менее противоречиво:

                                          w = can create files
                                          x = can cd into & modify files

                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                          Самое читаемое