• Написание сайтов на разных платформах?

    Sanes
    @Sanes
    Использовать относительные пути.
    Ответ написан
    Комментировать
  • Как быстро скопировать 40 млн файлов на другой сервер?

    gbg
    @gbg Куратор тега Linux
    Любые ответы на любые вопросы
    Как-то так:
    dd if=/dev/sda bs=65536 | ssh target-ip 'dd of=/dev/sda bs=65536'.

    На агрегированном канале 2x1Gbit выдает 100 мегабайт в секунду. Если подшаманить размеры блока bs= и mtu, и еще шифрование у ssh выключить, можно, я думаю, и все 200 мегабайт выжать.

    Проводить, на отмонтированном! (или смонтированном в readOnly) диске!
    Не зря dd расшифровывается как DestroyData.
    Варианты настройки шифрования (-c) и скорость (лучше - больше):
    ssh-cipher-speed-chart.png?w=630
    Ответ написан
    8 комментариев
  • Как начальник может контролировать фрилансера по часам удалённо?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Решение называется "адекватный начальник". Оставайтесь на окладе, продолжайте работать по 8 часов день с перерывом. Важно не количество отсиженного за работой времени, а качество сделанного.

    Если вы будете работать по 16 часов, а на выходе будет фигня из-под коня - какой от этого прок? А оплату будете требовать в двойном размере. Не годится такое, не правильно это.
    Ответ написан
    5 комментариев
  • С чего начать в 30 лет?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Фундаментальная проблема - в игрострой стоит очередь фанатов с горящими глазами. Людей, которые пишут игры, играют в игры, моддят игры, хакают игры..., начиная с возраста, когда они смогли дотянуться до клавиатуры (как ваш покорный слуга). При этом, у них столько мотивации, что они могут сами поставить себе задачу, сами нагуглить все, что нужно (Спасибо дяде Немнюгину за его учебник. Это все что нужно знать о DOS, чтобы закодить dOOm) и сами все напишут и нарисуют (работая над этим сутками. Не потому что над душей стоит босс с воплями о лишении премии, а потому что им это интересно).

    И вот теперь, Андрей, который уже устал хочет встать в очередь высоко мотивированных конкурентов и попросить себе оффер. Каковы его шансы на успех?

    В играх есть много специализаций программирования - хотите графику, придется учить одно (причем на 2d и 3d это одно будет разное), хотите игровую логику и скриптинг - это номер два, хотите системную часть и бэкенд - это будет третье.

    Для универсального развития, нужно начинать с простых фиговин вроде тетриса, арканоида, бильярда и прочего (в которых однако есть все столпы игростроя - графика + логика + системный движок, можно и добавить сеть, если подумать) и потом наращивать сложность - делать платформер или RTS.
    Ответ написан
    4 комментария
  • Как происходит доступ к эл. массива на уровне ядра? Malloc выделяет непрерывную физическую память?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как происходит доступ к эл. массива на уровне ядра?

    Так же как и на уровне приложения -- через трансляцию виртуального адреса в физический.

    Например массив Int* arr = new int[1024*1024*1024] он как храниться?

    Если мы для определённости возьмём linux, то у ядра есть несколько разных способов выделения памяти, в зависимости от того, для чего эта память выделяется. Есть наиболее простой и стандартный kmalloc который выделяет память непрерывную как виртуально так и физически. Обычно этим механизмом нельзя выделить большой непрерывный кусок. Есть vmalloc, который выделяет непрерывную виртуально, но возможно прерывную физически память. Есть get_free_pages который выделяет непрерывные страницы физической памяти, возможно, не отображаемые ни в какие виртуальные адреса. Есть Contiguous Memory Allocator который при старте системы резервирует кусок непрерывной физической памяти и может аллоцировать оттуда куски по запросу.
    Важный момент состоит в том, что аллокации делаемые ядром linux через упомянутые интерфейсы всегда обеспечиваются физической памятью, у памяти ядра нет пейджинга.

    А физическая, для массива то же? Ведь, так будет доступ намного быстрее?

    Почему быстрее? С точки зрения процессора всё равно будет трансляция виртуального адреса в физический, если повезёт -- попадание в TLB, если не повезёт -- ходить по каталогам и таблицам страниц в памяти.

    получается эмулятор каждый адрес вычислять что ли?

    Простой эмулятор -- да, наверно. Умный эмулятор может кешировать эту информацию, например именно это свойство даёт QEMU большую часть его Q.
    Ответ написан
    Комментировать
  • Есть ли на php библиотека для Telegram, подобная Telethon на Python?

    @Redeve
    Веб-макаке не хватит и 640гБ
    Ответ написан
    Комментировать
  • Чем ошибки отличаться от исключений?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно ошибки - это некое детерминированное поведение когда например в С++ функция fopen возрващает файловый хендл. И если проверка этого указателя на NULL - положительна значит была ошибка. И программист сам вручную принимает решение что делать.

    Исключения - это некоторое свойство блока кода в котором может произойти "нечто" и мы на своём уровне не желаем отрабатывать каждую ошибку каждой функции а определяем некий общий обработчик всех ошибок одного типа.

    Если не обрабатываем - то считается что делегируем обработку исключения той функции которая нас вызвала. По сути передаем управление "наверх". Тоесть кто вызвал - тот и обязан разруливать ситуацию. Очень похожий подход принят в акторной технологии.

    Обычно механика исключений хорошо приживается в языках с Garbage Collectors.

    Поэтому, подытоживая - да. Ошибки не равны исключениям. Исключения - это более высокоуровневый мехнизм.
    Ответ написан
  • Нужно открыть youtube в плеере VLC, в чём ошибка?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    погляжу народ обожает трудности
    x=($(youtube-dl -g https://www.youtube.com/watch?v=yfHQCNPTios)) && vlc ${x[0]} --input-slave ${x[1]}


    Чтобы открыть youtube 1080p в плеере VLC

    для этого нужно выставить нужные параметры в ключе --format
    x=($(youtube-dl -g --format="bestvideo[height<=?1080]+bestaudio" https://www.youtube.com/watch?v=yfHQCNPTios)) && vlc ${x[0]} --input-slave ${x[1]}

    подробнее об этом написал тебе в твоём предыдущем вопросе

    для mpv будет проще:
    mpv --ytdl-format="bestvideo[height<=?1080]+bestaudio" https://www.youtube.com/watch?v=yfHQCNPTios
    Ответ написан
    23 комментария
  • Как имитировать ЦОД?

    @pfg21
    ex-турист
    добавить задержки и нарушения работы сети netem tc ??
    Ответ написан
    1 комментарий
  • Как сделать удобный ввод пути до файла в своем Bash скрипте?

    sotvm
    @sotvm
    Умный поймёт, а дураку и так всё равно.
    добавить свой путь в PATH
    зы пропиши в башрс пару строк
    ифы лишеие выкини, я просто скопировал кусок целиком
    # enable programmable completion features (you don't need to enable
    # this, if it's already enabled in /etc/bash.bashrc and /etc/profile
    # sources /etc/bash.bashrc).
    if ! shopt -oq posix; then
      if [ -f /usr/share/bash-completion/bash_completion ]; 
    	then . /usr/share/bash-completion/bash_completion
      elif [ -f /etc/bash_completion ];
    	then . /etc/bash_completion
      fi
    fi
    
    if [ -x /usr/games/fortune ];
    then fortune ru |lolcat -F 0.7 ;
    fi
    
    ##  сперва будет искать man на русском, а если его нет, то на английском.
    export MANOPT="-L ru"
    
    ## По умолчанию, каждый экземпляр bash переписывает историю. То есть, если вы запустите два терминала, что-то в них сделаете, а потом закроете, то история сохранится только от последнего закрытого. (Она затрёт историю первого закрытого.) Это очень неудобно и легко исправляется вот такой командой:
    shopt -s histappend
    
    ##[ -f ~/.fzf.bash ] && . ~/.fzf.bash
    
    
    if [ -s ~/.Xmodmap ];
    then xmodmap ~/.Xmodmap
    fi
    
    ## для Wine
    export MESA_GL_VERSION_OVERRIDE=4.5
    Ответ написан
    2 комментария
  • Как сделать удобный ввод пути до файла в своем Bash скрипте?

    martin74ua
    @martin74ua Куратор тега Linux
    Linux administrator
    Подстановкой по TAB занимается не ваш скрипт, это делает bash. А если быть совсем точным - bash-completion. В нем описаны для разных программ допустимые аргументы и варианты подстановок. Вам стоит разобраться в правилах написания bash-completion расширения под ваш скрипт и распространять скрипт вместе с этим расширением.
    Ответ написан
    Комментировать
  • Почему метод, декорированный @property, вызывается автоматически?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    ведь я не совершал команду person.name='python'?

    Совершал self.name = name
    Ответ написан
    3 комментария
  • Опишите, как устроен процесс контрибьютинга?

    ValdikSS
    @ValdikSS
    Ну, это проще простого:
    1. Находим проблему в проекте, которая вам мешает
    2. Исправляем её, убеждаемся, что новый код по стилю и требованиям совпадает со старым
    3. Отправляем изменения так, как указано в требованиях проекта
    Ответ написан
    Комментировать
  • Есть ли какие-то сервисы или форумы, куда можно выложить свой код, чтобы его могли оценить и оптимизировать другие люди?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    В теории можно было бы и сюда, но хотя тег и есть, но сами модераторы признают, что модерируют его как бог на душу положит - то пропускают вопросы, то удаляют.

    На английском есть специализированный сайт codereview@stackexchange, при наличии языка это идеальный вариант.

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

    Самый надёжный способ получить code-review, это завести два аккаунта. С одного задать вопрос, "как сделать то-то", а с другого - запостить код, который это делает. И тут же набегут советчики, рассказать, что в этом коде неправильно.
    Ответ написан
    2 комментария
  • Опишите, как устроен процесс контрибьютинга?

    SilenceOfWinter
    @SilenceOfWinter
    та еще зажигалка...
    Мой тебе совет: вливаться стоит только в новые проекты или с целью исправления ошибок.
    Пошаговая инструкция:
    1. создаешь форк репозитория
    2. отправляешь PR'ы в основной репозиторий
    3. как только твой вклад перевалит за 5-10% от его кода, можешь попроситься в owner'ы
    3. profit!
    Ответ написан
    8 комментариев
  • Опишите, как устроен процесс контрибьютинга?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Самое главное - разбираться в проекте. Читать его баг-трекер и понимать потребности и над чем работает сообщество. Я как-то пытался стать контрибутором apache ignite но не вышло. Времени не хватало. А потребности были со стороны нашего проекта.

    Вобщем читаете баг-трекер. Берете проблему и разбираетесь. Поскольку речь идет о больших проектах то пройдут месяцы и годы прежде чем вы сможете делать фичи.

    Техническая сторона не особо важна. Главное что у вас есть ценный merge-request который нечто исправляет и это НЕЧТО очень нужно в мире.
    Ответ написан
    Комментировать
  • Опишите, как устроен процесс контрибьютинга?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ответ написан
    Комментировать
  • Как сделать приветственное сообщение в AIogram?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Это меняется в свойствах бота у BotFather.
    Ответ написан
    Комментировать
  • Регулярное выражение работает на regex101.com, но не работает в скрипте PHP?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    А зачем тут регулярка?
    <?php
    $json = <<<JSON
    {
      "translations": [
        {
          "text": "Столкновение с астероидом принесло с собой смертельную угрозу, известную как \"Синбо\", заставившую человечество отступить на землю, отвоеванную у моря. Единственный луч надежды - это устройство, которое может бороться с Синбо, называемым \"Механическим Божественным Генералом\".",
          "detectedLanguageCode": "en"
        	
        }
      ]
    }
    JSON;
    $data = json_decode($json);
    var_dump($data->translations[0]->text);
    // string(505) "Столкновение с астероидом принесло с собой смертельную угрозу, известную как "Синбо", заставившую человечество отступить на землю, отвоеванную у моря. Единственный луч надежды - это устройство, которое может бороться с Синбо, называемым "Механическим Божественным Генералом"."
    Ответ написан
    Комментировать
  • Что надо сделать, чтобы импорт был удачный?

    @PavelMos
    Загружаемые модули должны быть видимы из скрипта.
    Можно подключить папки
    import sys
    sys.path.insert(0,'C:\\py\\mymodules')

    и после этого можно будет
    import myfile
    или же указывать путь
    Ответ написан
    3 комментария