Задать вопрос
  • Анимация в bash?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    вместо clear попробуйте использовать "tput cup $y 0", а clear сделать только при смене направления.
    Также можно сократить вычисления, высчитывая двиг слева только при движении влево и вправо.
    И использовать индексы, вместо преобразования имени переменной.
    И как-то у вас все не-аккуратненько. Мышка кривая, вы бы ее подрисовали ровнее, как-то так:

    spoiler
    #!/bin/bash
    
    let y=0
    let x=0
    let max_x=120 #$(tput cols)
    let max_y=24
    let wall=0
    let space=""
    
    draw_top() {
        local line[0]='   ###               ###'
        local line[1]='  #####   ## | ##   #####'
        local line[2]='########################### '
        local line[3]='  #######################  '
        local line[4]='     #################   '
        local line[5]='          #######     '
        local line[6]='           ##### '
        local line[7]='             #  '
        local line[8]='              '
    
        for index in {0..8}; do
            echo "$space${line[$index]}"
        done
    }
    
    draw_bottom() { 
        local line[0]='              '
        local line[1]='             #  '
        local line[2]='           ##### '
        local line[3]='          #######     '
        local line[4]='     #################   '
        local line[5]='  #######################  '
        local line[6]='###########################'
        local line[7]='  #####   ## | ##   #####'
        local line[8]='   ###               ###'
    
        for index in {0..8}; do
            echo "$space${line[$index]}"
        done
    }
    
    draw_right() {
        local  line[0]='          #   '
        local  line[1]='          ##  '
        local  line[2]='         #### '
        local  line[3]='       #######'
        local  line[4]='     ######## '
        local  line[5]='     #######  '
        local  line[6]='     ######   '
        local  line[7]='  ##########  '
        local  line[8]='###########-  '
        local  line[9]='  ##########  '
        local line[10]='     ######   '
        local line[11]='     #######  '
        local line[12]='       #######'
        local line[13]='         #### '
        local line[14]='          ##  '
        local line[15]='          #   '
    
        # Вычисляем сдвиг слева
        space=""
        for ((j = 0; j < $2; j++)) ; do
          space="$space "
        done
        for index in {0..15}; do
            echo "$space${line[$index]}"
        done
    }
    
    draw_left() {
        local  line[0]='   # '
        local  line[1]='  ## '
        local  line[2]=' #### '
        local  line[3]='####### '
        local  line[4]=' ######## '
        local  line[5]='  ####### '
        local  line[6]='   ###### '
        local  line[7]='  ########## '
        local  line[8]=' -########### '
        local  line[9]='  ########## '
        local line[10]='   ###### '
        local line[11]='  ####### '
        local line[12]='####### '
        local line[13]=' #### '
        local line[14]='  ## '
        local line[15]='   # '
    
        # Вычисляем сдвиг слева
        space=""
        for ((j = 0; j < $2; j++)) ; do
          space="$space "
        done
        for index in {0..15}; do
            echo "$space${line[$index]}"
        done
    }
    
    move_right() {
        if ((x < max_x - 15))
        then
            ((x++))
        else
            wall=1
        fi
    
        tput cup $y 0
        draw_right $y $x
    }
    
    move_bottom() {
        if ((y < max_y - 8))
        then
            ((y++))
        else
            wall=1
        fi
        
        tput cup $y 0
        draw_bottom $y $x
    }
    
    move_left() {
        if (( x > 0 ))
        then
            ((x--))
        else
            wall=1
        fi
    
        tput cup $y 0
        draw_left $y $x
    }
    
    move_top() {
        if (( y > 0 ))
        then
            ((y--))
        else
            wall=1
        fi
    
        tput cup $y 0
        draw_top $y $x
    }
    
    random_choice() {
        RANGE=$1
        number=$RANDOM
        let "number %= $RANGE"
        echo "$number"
    }
    
    move() {
        if [ "$1" == 0 ]
        then
            move_right
        fi
    
        if [ "$1" == 1 ]
        then
            move_left
        fi
    
        if [ "$1" == 2 ]
        then
            move_top
        fi
    
        if [ "$1" == 3 ]
        then
            move_bottom
        fi
    }
    
    calculate_coords() {
        let vertical=$1
    
        # Вертикально -> Горизонтально
        if (( vertical > 0))
        then
            x=$((x-8))
            y=$((y+5))
    
            if (( x < 0 ))
            then
                x=0
            fi
    
            if (( x + 31 > max_x))
            then
                x=$((max_x-31))
            fi
    
            if (( y + 8 > max_y))
            then
                y=$((max_y-8))
            fi
    
        # Горизонтально -> Вертикально
        else
            x=$((x+8))
            y=$((y-5))
    
            if (( y < 0 ))
            then
                y=0
            fi
    
            if ((x + 13 > max_x))
            then
                x=$((max_x - 13))
            fi
    
            if ((y + 17 > max_y))
            then
                y=$((max_y - 17))
            fi
        fi
    }
    
    start() {
        current=0
        direction=0
        prevent_direction=0
        clear
    
        while true; do
            # Calculate dicrection
            if ((current == 20 || wall == 1))
            then
                wall=0
                current=0
                prevent_direction=$direction
                direction=$(random_choice 4)
    
                if (( direction < 2 && prevent_direction > 1 ))
                then
                    calculate_coords 0
                fi
    
                if (( direction > 1 && prevent_direction < 2 ))
                then
                    calculate_coords 1
                fi
                clear
            fi
    
            # Move
            move $direction
            current=$((current+1))
            /bin/sleep .05
        done
    }
    
    start
    Ответ написан
    Комментировать
  • Cертификаты по Wordpress разработке?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Создатели WordPress не создавали сертификационную программу.

    А сертификат не от производителя - практически всегда бред.
    Ответ написан
    Комментировать
  • Что почитать или/и что посмотреть (видео уроки) по ОС?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    software engineer
    Анна, судя по вашим вопросам, учат вас по жутко древним и устаревшим материалам. Поэтому если вам нужно подготовиться именно к экзамену - насилуйте вашего преподавателя, потому что нахватавшимь современных и актуальных представлениях о том, как это все работает - вы можете с вашим преподавателем не сойтись во мнениях.
    А во-вторых 30 лет назад, во времена Нортона, все это было в разы проще чем сейчас, поэтому как бы давалось пользователям. Сейчас это все усложнилось настолько, что не каждый администратор углубляется в подобные вопросы.
    То же управление процессами в Линуксе - сменилось уже несколько представлений о том, как это должно работать. Многие современные курсы все еще оперируют timeslice, хотя они уже давно устарели. Многие считают что CFS это стандарт, а он лишь треть того, что происходит на самом деле.
    Ответ написан
    3 комментария
  • Как правильно маштабировать проект на Amazon AWS?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    так а бутылочное горлышко где?
    Если база тормозит - кластеризуем, оптимизируем.
    Если база не тормозит, а тормозит бэкенд - ставим какой-нить балансер и несколько бэкендов к той же базе.

    В общем выясните что больше всего страдает от нагрузки
    Ответ написан
    2 комментария
  • Какие различия программирования под UNIX и Linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    что я прочитаю книгу по системному программированию в UNIX и смогу после этого программировать в Linux без изменений?


    Конечно нет. чтобы программировать в Линукс нужно не просто прочитать книгу по системному программированию, а научиться программировать. На практике.
    А тогда будет неважно на чем будете программировать.
    Ответ написан
    Комментировать
  • Провайдер блокирует порты. Как обойти блокировку?

    saboteur_kiev
    @saboteur_kiev Куратор тега Сетевое администрирование
    software engineer
    Подучить терминологию, понять что такое nat, а потом уже думать блокировка это или се ля ви.
    Ответ написан
    3 комментария
  • Как организовать сервер при сером IP?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    если есть комп с белым ipv4, то настройте port forwarding через него на внутренний сервер
    Ответ написан
    Комментировать
  • Два вопроса про sysfs?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    да, также как и devfs (/dev) и процфс (/proc)

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

    в sys/ вместо drivers теперь block, class, bus и другое.
    подробнее о sysfs:
    https://www.kernel.org/doc/Documentation/filesyste...
    Ответ написан
    Комментировать
  • В какой из новых доменных зон была заявлена, а затем отменена, очень высокая стоимость регистрации доменов?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    спецзона .tel - оно?
    вроде на старте домен стоил около 10.000 руб, сейчас - как и все около 800-1000 руб

    Update:
    вспомнил. Это была зона .sucks
    И статья есть:
    https://habrahabr.ru/company/webnames/blog/252583/
    Ответ написан
  • Топ программ по поиску программы шпионов?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    вы это серьезно считаете что подобную информацию вам просто скинут в открытых источниках?
    тут и на черном рынке еще подумают, прежде чем продавать.
    Ответ написан
    2 комментария
  • Как работает история комманд в bash?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    1) при выходе, баш просто пишет все выполняемые команды в $HISTFILE файл (по умолчанию это ~/.bash_history.
    До выхода история хранится в памяти, и параметры HISTSIZE и HISTFILESIZE могут быть разными.

    Можно сбросить текущую историю из памяти в файл командой history -a

    2), 3). вы можете попробовать добавить нужные команды в prompt, тогда при выполнении любой команды будет выполняться блок ваших команд. Но это несколько костыльное решение. Например добавить history -a в PROMPT_COMMAND, чтобы хистфайл обновлялся после каждой команды. можно добавить туда и вывод history 1 с перенаправлением в скрипт, который отправляет почту, но это вызовет задержку на выполнение каждой команды. лучше из отдельной сессии следить за этим файлом.
    Ответ написан
    2 комментария
  • Имеет ли смысл изучать такие продукты microsoft, как SharePoint и skype for business?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    внутренний сайт на джумла под апаче не заменят еще очень долго.

    sharepoint вполне себе полезный продукт, и если он уже внедрен, то его еще нескоро будут менять. Вводить с нуля - тут не факт, есть варианты.
    А skype for business как раз весьма неплох.

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

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В open type шрифтах есть возможность создать альтернативное начертаний символа, некоторые программы позволяют с этим работать, например https://helpx.adobe.com/ru/photoshop/using/fonts.html

    Почитайте также
    https://habrahabr.ru/post/127088/
    https://habrahabr.ru/post/90236/

    Есть даже готовый продвинутый онлайн вариант
    coo.by/writer_dev
    Ответ написан
    1 комментарий
  • Как через bat обеспечить общий доступ к каталогу?

    saboteur_kiev
    @saboteur_kiev Куратор тега Сетевое администрирование
    software engineer
    читай и пробуй "net help share"
    Ответ написан
    Комментировать
  • Как создать сайт со страничкой расчета?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Освойте базовый html, почитайте что такое формы в html, и базовый php, чтобы могли обработать значение формы и вывести результат простого расчета.

    Можно генерировать excel файлы через php, а можно просто создать файл с разделителями табуляция и расширением .xml - Excel такое откроет.
    Ответ написан
    3 комментария
  • Необходимый стек навыков\умений на стажировку?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Почитайте вакансии, почитайте готовые резюме, посмотрите что спрашивают.
    В идеале попробуйте до интервью добраться.
    Не ставьте цель только стажировку, может самоучкой до нормального джуна дойдете.

    Если есть знакомые, которые уже работают, попросите их вас пособеседовать, или чтобы их коллеги провели поддельное интервью.
    Ответ написан
    Комментировать
  • Как скачать exe файл в убунту?

    saboteur_kiev
    @saboteur_kiev Куратор тега Ubuntu
    software engineer
    Запустите консоль и скачайте через wget

    wget http://host.com/myfile.exe
    Ответ написан
    2 комментария
  • Как добавить компилятор Visual Studio C++ в powershell\cmd?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    В PATH нужно добавлять каталог (C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin), а не cl.exe

    Но ошибка говорит, что у вас не указан путь поиска ВКЛЮЧАЕМЫХ файлов.
    То есть сам cl.exe находит. Вам нужно добавить опцию /I или -I с указанием, где include файлы лежат

    cl.exe -Ic:\src test.cpp
    Ответ написан
    Комментировать
  • Что использовать в качестве сервера для печати?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    Устанавливаете все принтеры на отдельном компьютере. На нем эти принтеры расшариваете, и подключаете пользователям принтеры не напрямую, а эти расшаренные.

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

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

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Не слишком похоже на вирус.
    Скорее всего кто-то на вашем компе руками установил трояна. Дети, недобрые друзья есть?
    Ответ написан
    1 комментарий