Задать вопрос
  • Как устроена инфраструктура Telegram ботов?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Есть же подробная, публично доступная документация
    https://core.telegram.org/bots

    И даже по-русски
    https://tlgrm.ru/docs/bots/api
    Ответ написан
    Комментировать
  • Что "происходит" с виртуальной машиной Windows после отключения RDP?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    rdp это не подключение к удаленному экрану, а подключение к удаленной сессии, которая создается при подключении и пропадает при отключении.
    1. Подключитесь к удаленной консоли при помощи teamviewer, radmin или другой подобной программы и запустите кликер на ней.
    2. На удаленной виртуалке поставьте еще одну виртуалку (или несколько), и запустите кликер внутри нее - на ее консоли
    Ответ написан
    4 комментария
  • Учить ли c++ в 2018. Для знающего C#?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Если вы считаете, что за месяц, почитав базовую работу с int/string и циклами вы что-то освоили, вы глубоко заблуждаетесь, особенно учитывая ваши другие вопросы.

    Изучите хотя бы один язык, тот же C# до уровня уверенного джуниора, потом уже будете считать себя "знающим C#", потому что сейчас вы его совершенно не знаете.
    Ответ написан
    5 комментариев
  • Как создаются читы на c#?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Ну для начала изучаете С#, и пишете софт, который делает то, что вам нужно.

    Нужно каким-то образом подумать и осознать, что читы - это ОБЫЧНЫЕ программы, которые пишутся ТАКЖЕ как и любые другие программы - при помощи навыков программирования.

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

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Железо
    software engineer
    Операционная система сама знает что нужно делать.
    Чтобы система работала быстрее нужно уметь настраивать систему, а не искать волшебную программу.
    Если ноутбук слабый, он не станет сильным из-за какой-то программы.
    Хотите платное - обратитесь в сервис, пусть вам настроят ноутбук.
    Ответ написан
    4 комментария
  • Какой программой, можно создать, максимально корректный и точный образ диска?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    dd
    Ответ написан
    Комментировать
  • Что нужно знать С++ разработчику для начала работы на фрилансе?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Начать работать на фрилансе совершенно не озанчает ити на фриланс стажером/джуниором.
    Фриланс предполагает человека, который самостоятельно может справляться с задачами.
    Если вы не видите на фрилансе С++ задач уровня джуниор вообще, значит С++ джуниоры не востребованы на фрилансе.
    Совершенно не сложно просто посмотреть какие есть задачи самостоятельно и понять, чего хотят.

    P.S. На самом деле, про фриланс говорят многие, а работают единицы. Моя задача по С++ висит уже скоро месяц, никто не берется даже оценить.
    Ответ написан
  • Как удалить ненужные файлы Embedded Linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Посмотреть куда ведет ссылка.
    Линукс организован таким образом, что использование ссылок - удобный способ для версионирования.
    Чистить "лишние файлы", если вы не разбираетесь как работает Линукс - не нужно в принципе.
    Ответ написан
    3 комментария
  • Что не даёт на C++ писать кроссплатформенные приложения?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Любая программа, написанная под конкретную платформу - работает гарантированно на этой платформе.

    java считается кроссплатформенной, потому что вы пишете не под линукс и не под виндовс и не под андроид, а под java, а уже те, кто писали саму java машину, берут на себя то, что сперва на windows/linux/android будет установлена соответствующей версии java, в которой будет крутиться ваша программа.
    При этом все равно разница существует, поэтому нужно ее учитывать при разработке.

    Для С и С++ основная платформа - ОС, а то и непосредственно процессор, следовательно уровень абстракции от железа и архитектуры в этом языке низкий, и для разработки кроссплатформенного софта, учет всех нюансов различных архитектур и операционок будет на программисте.
    Ответ написан
    Комментировать
  • Что значит "возвращение" в python?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Если сокращенно, то
    function func1 (y) {
      return y*2;
    }

    Такая функция func1 возвращает значение - число. Можно например сделать
    myvariable = func1(1), и присвоить результат в переменную

    function func2 (y) {
      print "Ваш y это что-то типа "+y;
    }

    Такая функция func2 выводит на экран строку, но ее результат нельзя присвоить в переменную, то есть
    mystring = x (2) - не получится

    function func3 (y) {
      print "Ваш y это что-то типа "+y;
      return "Ваш y это что-то типа "+y;
    }

    А вот такая - и текст выведет и значение вернет.
    Ответ написан
    1 комментарий
  • AWS: Как передавать большие файлы (например, конфиги) в USERDATA при создании LaunchConfiguration?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    1. Копировать можно просто по scp
    2. Выкладывать можно не только под basic auth, а еще и в запароленных архивах
    Ответ написан
    Комментировать
  • Как количество файлов влияет на работу сервера?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    1. Скорость работы с кучей файлов теоретически такая же как и с базой. Но вот кеширование файловой системы и базы идет по разному. И если при обращении к таблице, она у вас сразу вся закешируется, то вот закешировать 300.000 файлов/каталогов не так просто.

    2.
    При доступе к сайту обычно обрабатывают чпу-урл через пхп и ищут в базе, у меня всегда был вопрос почему не создавать реальные директории и в них класть php файлик с id и т.п чтобы потом быстро найти данные в б.д."


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

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Похоже, вы путаете "анализ бинарного кода" и "статический анализ кода".

    У них некорректно сравнивать преимущества друг перед другом, так как это совершенно разные вещи.
    Ответ написан
    2 комментария
  • Как взять параметры для запуска скрипта из текстового файла?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Потому что
    ./test.sh 123 это запуск с аргументом,
    а "cat test.txt | ./test.sh" означает передачу в STDIN, словно вы сделали так:

    $ ./test.sh
    123

    из файла можете брать параметры через read или через source
    Ответ написан
    Комментировать
  • Есть ли возможность запустить bash с параметрами/из опр. местоположения?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    Или запустить sh-скрипт с возможностью(есть такая?) продолжить работу вручную после выполнения скрипта?


    А в чем проблема собственно сперва зайти в каталог, затем запустить баш из вашего скрипта, вот так:
    #!/bin/bash
    
    echo this is my script
    cd /mydir
    bash
    Ответ написан
    1 комментарий
  • Анимация в 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 без изменений?


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