image


image

image

image

image

image

image

image

image

image

> PDF-версия тут

Присоединяйтесь к нам!

Заглядывайте в наши группы в ВКонтакте и Фейсбук, там много интересного.
Поделиться с друзьями
-->

Комментарии (28)


  1. AlexMal
    19.05.2017 13:55
    +3

    зло.рф — звучит как-то неоднозначно.
    А так, довольно интересный подход.


    1. Daruma62
      19.05.2017 18:34

      Это-же перевод иностранного автора :)


      1. FirstJohn
        19.05.2017 18:35
        +1

        ну нет, это истинно русская шутка: р


        1. alff31
          20.05.2017 12:39

          Имхо злойсайт.рф звучало бы понятнее


  1. rPman
    19.05.2017 18:26

    Не понял про двухфакторную авторизацию, что такое 'коды фишатся' и почему этого нет при использовании аппаратного токена? — от слова фишинг? железные токены от этого не защищают.

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


    1. FirstJohn
      19.05.2017 18:38

      если вы имеете ввиду генераторы одноразовых кодов, то все верно. Но под USB-ключом имеются ввиду не они (read-up о U2F).


  1. iRandom
    19.05.2017 18:34
    +1

    Хорошая подборка, нашел себе подсказку для переделки парсера

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

    func1 () {

    #somethingusefulhere

    }

    func2 () {

    #somethingusefulhere

    }

    "$@" # <<обязательно в ковычках

    а так спасибо :)


  1. Detuner
    19.05.2017 18:40
    +2

    В первом слайде ошибка:

    if ["$X" = "$Y"]   #неверно!!!
    
    #Правильно:
    if [ "$X" = "$Y" ] 
    


    1. Finesse
      20.05.2017 03:22

      Почему bash такой несогласованный: в одних местах пробелы и кавычки необходимы, в других запрещены?


      1. grossws
        20.05.2017 04:06
        +1

        Так сложилось исторически. Многие вещи — наследие ещё более старых shell'ов. В случае примера выше [ является либо внешней программой, либо builtin'ом. И в том, и в другом случае пробел обязателен. А, например, арифметика вида $((a+1)) не требует пробелов, т. к. является частью синтаксических конструкций баша, и явно описана в грамматике в отличии от builtin'ов, которые сначала парсятся как generic конструкция и потому требуют разделения пробелами аргументов.


        1. proctoleha
          20.05.2017 07:24

          Да уж баш он такой баш. Я с ним исключительно на вы, т.к. потребность в написании скриптов возникает редко и каждый раз думаешь: а нужен тут пробел, кавычки и т.д.

          Из гайда для меня самое ценное: shellcheck.net. Раньше не знал про такой ресурс. Так что спасибо.


      1. danfe
        20.05.2017 17:43
        +3

        Он, шелл (не надо говорить баш, это плохой тон), напротив, весьма согласован и логичен. Нужно лишь уяснить, что каждая строчка скрипта (кроме определений функций и управляющих конструкций) — это тупо команда + её аргументы. В этом свете сразу становятся понятными и требования пробелов в одном контексте, и запрещение их в другом, например, при присваивании переменной значения (ср. foo=bar с попыткой исполнения команды foo с параметрами = и bar).

        [ изначально был программой, а не внутренней конструкцией языка, и все ифы, вайлы, форы... Зачем я это пишу? В man sh(1) всё отлично изложено.


        1. mva
          23.05.2017 21:18

          не надо говорить баш, это плохой тон

          На самом деле, именно что надо.
          Bash даже в режиме эмуляции sh страдает башизмами.
          Равно как и ZSH даже в режиме эмуляции bash, sh и других позволяет кучу вольностей.


          Поэтому когда идёт речь о синтаксисе и его работоспособности — надо называть шелл по имени.


          1. danfe
            26.05.2017 15:17

            Это вы знаете о тонкостях эмуляции sh и слово «башизмы», вам можно. :-) Большинство же пишет шелл-скрипты, называя их баш-скриптами, просто потому, что других шеллов не знает (я чуть ниже об этом писал, в т.ч. почему это плохо).


    1. Frankenstine
      22.05.2017 11:40

      Более того, действительно правильно будет лишь

      if [ "x$X" = "x$Y" ] 
      

      Иначе у скрипта будут проблемы, если хотя бы одна из переменных пустая.


      1. Detuner
        22.05.2017 15:32

        Засомневался и специально проверил: нет проблем, ни при пустой, ни при неопределённой переменной. Во всяком случае, так в bash 4.3.30. Но я не силён в теме переносимости скриптов между шеллами/версиями шеллов, возможно вы и правы.


        1. Frankenstine
          22.05.2017 16:38

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


  1. A1estro
    19.05.2017 18:40

    Про tcpdump ошибка:
    не dest, а dst.


    1. FirstJohn
      19.05.2017 18:48

      все верно, исправим ;)


  1. covaxi
    20.05.2017 07:33
    -3

    На нас напали! Exterminate, exterminate, exterminate!!!111одинодин


  1. barantaran
    20.05.2017 12:18

    If computers are so fast, why Windows are so slow :(


  1. Opaspap
    20.05.2017 12:54
    +1

    В нижнем левом слайде про CORS фактическая ошибка, access-control разрешает не отправлять данные, а читать в браузере содержимое ответа.


  1. danfe
    20.05.2017 12:59
    +1

    За советы типа «используйте [[, а не [» надо давать по рукам. Такой код не выполнится в стандартных реализациях sh(1), например в *BSD, а тащить каждый раз баш не хочется. Ну и [ — встроенная команда практически в любом современном шелле, так что это не аргумент.


    1. ALexhha
      20.05.2017 23:47

      Если вы не заметили — это подсказки по bash ;) Поэтому странно тут упоминать совместимость с sh


      1. danfe
        21.05.2017 16:16

        Я заметил; нет, не странно. 99% баш-скриптов на самом деле каких-то действительно полезных фишек баша не используют (типа массивов, например, или улучшенного parameter expansion) и являются по сути обычными шелл-скриптами с непереносимыми конструкциями (навроде той же [[ -a ... вместо [ -e ... или == вместо =).

        Не стоит приучать себя писать баш-скрипты: ни баш, ни [[ не стандартизованы, в отличие от POSIX shell и test ([). Переносимость — великая вещь. Пишите shell-скрипты, и старайтесь проверять их работу на нескольких разных реализациях *nix.


        1. Okloks
          23.05.2017 16:20

          и где почитать, как писать именно shell?


          1. danfe
            26.05.2017 15:04

            Всё же легко гуглится, вот для начала пара ссылок.


  1. brdsoft
    22.05.2017 19:33
    -1

    Ошибка в слове «аутенфикация»