Задать вопрос
  • Какой сервер выбрать для хранения изображений для сайта?

    @deliro
    S3
    Ответ написан
    Комментировать
  • Как корректно подключить гитару к Linux Mint?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    И будет стартовать ибо это сервис.
    Стопайте сервис

    sudo systemctl stop pulseaudio
    Ответ написан
    3 комментария
  • Как скопировать файл с заменой в нем некоторых участков?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    замена внутри файла

    Я использую для этого такую конструкцию:
    #! /bin/bash
    
    subst()
    {
    	eval "cat <<EOF
    `cat \"$1\"`
    EOF"
    }
    
    . ./config
    subst ./dhcpd.conf.in > ./dhcpd.conf


    При этом dhcpd.conf.in выглядит так:
    ddns-update-style interim;
    ignore client-updates;
    
    subnet ${NET}.0 netmask 255.255.255.0 {
            option routers                  ${NET}.1;
            option subnet-mask              255.255.255.0;
    
            option domain-name-servers      192.168.248.21;
    
            option root-path                "${NET}.1:/tftpboot/tensilica/rootfs/${ROOTFS}${NFS_MOUNT_OPTIONS}";
    
            range dynamic-bootp ${NET}.128 ${NET}.128;
            default-lease-time 21600;
            max-lease-time 43200;
    }

    а config -- так:
    NET=192.168.135
    ROOTFS=cp0_latest
    NFS_MOUNT_OPTIONS=${NFS_MOUNT_OPTIONS},noac
    IF_CONFIG="$NET.1 up"
    CONFIG=debug-kc705-cp0_latest
    KERNEL_IMAGE=uImage


    Т.е. в функции subst внутренний cat подставляет тело файла-шиблона, а eval выполняет внешний cat с подстановкой shell-переменных, зачитанных из config. Нужно понимать, что и шаблон и конфиг в этом скрипте могут выполнять произвольные команды, т.е. нельзя их брать у недоверенного пользователя.
    Ответ написан
    Комментировать
  • ООП в моём тестовом задании, code review?

    @grinat
    Это не ооп, ты просто собрал функции и засунул их в класс. Типа такого надо:
    class User (){
        construct ()
       save() {
           return ajax-запрос
       }
    }
    class List () {
      this._list = []
      consruct(id) {
      }
      addItem(user)
      render () {
          doucment.getElemntBy(id).innerHtml = ''
          this._list.forEach(user => {
             // добавление новой строки
         })
      }
       
      fetcList () {
         return аяк-запрос.then(users => {
            this._lsit = []
             users.forEachv(user => {
                 this.addItem(user)
            })
        })
       }
    }
    new Subsriber {
      action,
      cb
    }
    class Emitter {
        this._evts = []
        subsctibe(action, cb) {
           this.evts.push(new Subsriber (action, cb))
        }
        emit(action, value) {
            this.evts.forEach({action} => {
           if (act === action) {
               cb(value)
           }
         })
        }
    }
    class Form (){
      consruct(id, emmiter) {
        doucment.getElemntBy(id).addEventListener('sumbit', () => this.onSubmit)
      }
      addElement(elem) {
         this.elements.push(el)
       }
      onSubmit () {
          const user = new User()
          for (let elem of this.elements) {
              user[elem.name] = elem.value
         }
         user.save().then(добавленный юзер => {
               this.emmiter.emit('submit', user)
         })
      }
      }
    
      render () {
          doucment.getElemntBy(id).innerHtml = ''
          this.elements.forEach(elem => {
             doucment.getElemntBy(id).insertBefore(elem)
         })
      }
    }
    // инициализация этого говна
    const list = new List(listId)
    const emmiter = new Emiiter()
    const form = new Form(formId, emmiter)
    form.addElement(document.createElemnt('input'))
    
    // теперь отрисовка
    form.render()
    list.render()
    
    // подписываемся на события формы
    emmiter.subscribt('sumbit', user => {
        list.addItem(user)
        if (не грузим с сервера) {
          // перерисуем
             list.render()
        } else {
            // перерисуем
             list.fetchList().then(() => ist.render())
         }
    })
    Ответ написан
    Комментировать
  • Какой дистрибутив подойдет разработчику?

    sim3x
    @sim3x
    Сразу с винды не стоит слазить

    Убейте пару установок линукса на виртуалке
    Ответ написан
    1 комментарий
  • Почему ругается bash строка 39: синтаксическая ошибка: неожиданный конец файла?

    DevMan
    @DevMan
    походу при копипасте попался непечатный символ (это отлично видно в hex-редакторе).
    прост удали последнюю строку полностью и набери fi ручками.
    Ответ написан
    Комментировать
  • Изображения вставлены через атрибут тега style="background-image: url()". Почему?

    delphinpro
    @delphinpro Куратор тега CSS
    frontend developer
    Вы не усмотрели самого главного:
    5c1a74d4749cd428813580.png

    Чтобы оценить, смотрим уровень браузерной поддержки здесь https://caniuse.com/#feat=object-fit
    и здесь https://caniuse.com/#feat=background-img-opts

    И понимаем, что надежнее вставить картинку фоном, нежели использовать object-fit на теге img
    Ответ написан
    1 комментарий
  • Легаси-монстр. Как побеждаете?

    @RidgeA
    Немного банальностей:
    1. Бизнес не даст ресурсов на переписывание проекта с 0: время и большие риски
    2. Бизнесу как правило все-равно какое говно там крутится, лишь бы деньги приносило.
    3. Если более-менее адекватное руководство - нужно донести идею постепенного рефакторинга кода по мере необходимости в процессе фикса багов и разработки новых фич и тем самым аргументировать что на разработку новых фич/фикс багов нужно больше времени.

    Как я бы делал:
    1. Тесты на существующие функции (если возможно, видел методы в контроллерах с мешаниной вызовов методов моделей, созданием DTO и сохранением их через репозиторий, прямых http-запросов и запросов в бд на 1000+ строк, покрыть такое тестами - невозможно)
    2. Составить план рефакторинга, где отметить что и где надо сделать, коротко, в основном для команды разработчиков.
    3. Постепенно рефакторить старый код по мере взаимодействия с ним.
    4. Новый код - писать сразу правильно, для взаимодействия со старым кодом где нет возможности/времени его переделать - делать какие-то адаптеры, что бы не распространять токсичный код.
    5. Как оперативная мера защиты от SQL иньекций можно поставить что-то вроде этого https://github.com/nbs-system/naxsi
    6. Мониторинг кода, который не используется - pinba.org , по мере обнаружения такого кода - удалять безвозвратно (в крайнем случае есть VCS, я надеюсь). Начать с более высокоуровнего кода - контроллеры, напримерю. Плюс IDE в этом могут помочь и grep.
    7. Как вариант - новые фичи можно пилить в отдельном проекте (v2), крутить оба и постепенно переходить на новый, со временем старый (v1) выкинуть (и начать делать новый - v3 :-) )
    Ответ написан
    3 комментария
  • Как сделать приложение на андроид если ты чайник?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Сначала читаем Кэти Сиерра, Берт Бейтс - Изучаем Java, потом Дон и Дэвида Гриффитс - Программирование для Android, после пытаемся реализовать задуманное, периодически прибегая на Тостер с более конкретными вопросами.
    Ответ написан
    Комментировать
  • В какой программе компилировать .с файлы для консоли?

    Вариант 1: www.mingw.org/wiki/HostedCrossCompilerHOWTO
    Вариант 2: Для Windows 10 установить консоль Linux и в ней делать компиляцию (https://docs.microsoft.com/en-us/windows/wsl/insta... )
    Вариант 3: Виртуальная машина VirtualBox c установленным Linux
    Ответ написан
    Комментировать
  • Какой софт необходимо устанавливать вне docker контейнера?

    @Hanneman
    Я считаю, что такие вопросы не стоит задавать - вы сами пишете "только начал изучать тему Docker контейнеров". Ведь сначала лучше почитать подробнее и последовательно ознакомиться с документацией на русском, причем пошаговой и разжеванной.
    Не будут же вам здесь переписывать тонну информации, тем более что на ваш вопрос нет однозначного ответа.
    Начните, по ходу шагов начнете понимать концепцию, что как работает, а потом задавайте конкретные вопросы "делаю так, но результат не такой, как ожидалось" - вот тогда вопрос будет адекватным.
    Ответ написан
    Комментировать
  • Как пингануть с конкретного интерфейса, если интерфейсов несколько?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Пакеты отправляются в соответствии с таблицей маршрутизации. Если хотите, чтобы ехало через другой интерфейс - добавьте соответствующий маршрут. Если на одном интерфейсе несколько адресов, у пинга есть ключ -I, чтобы вручную указать, с какого адреса слать.
    Ответ написан
    3 комментария
  • Как избежать претензий правообладателя на фото, если фото загружает любой пользователь сайта?

    Jump
    @Jump
    Системный администратор со стажем.
    Как избежать претензий правообладателя на фото, если фото загружает любой пользователь сайта?
    Никак. Правообладатели имеют право предъявлять претензии.

    Сейчас я получаю запрос по почте о нарушении авторских прав на эти фото и выкатывается значительная сумма.
    Вы тоже можете кому-нибудь выкатить по почте запрос на пару миллионов. Глядишь и заплатят. Не заплатят, так и фиг с ними, благо отправка e-mail'ов бесплатная.

    К письму приложены сканы протокола осмотра доказательств заверенные нотариусом.
    Круто. Кто проводил осмотр доказательств? Следак? В рамках какого дела? При чем тут нотариус?

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

    update
    Поймите простую вещь - вы не знаете достоверно кто написал письмо, и является ли он правообладателем.
    Если вы заплатите деньги - кому вы их заплатите, и за что? А через месяц к вам придет реальный правообладатель и потребует с вас денег в суде, и ему будет до лампочки что вы платили каким-то левым дядям.
    В вашем случае даже обращаться к юристу нет небходимости в данной ситуации - достаточно просто попросить того кто вам написал представиться, предоставить доказательства того, что он является правообладателем, и четко пояснить суть претензий к вам.
    Вот когда он это сделает - можно будет и у юриста проконсультироваться, обсудить адекватность требований, и поторговаться насчет суммы компенсации.
    А без этого - пустая трата времени и денег.

    Допустим это реальный правообладатель и он подаст в суд -
    spoiler
    1. Нет гарантии что он выиграет суд, но есть гарантия что он потратит на судебные издержки кучу денег.
    2. Суд будет проходить по вашему месту жительства а отправлять юриста через всю страну, платить за проживание в гостинице, суточные и прочие расходы это деньги сравнимые с заявленной суммой.
    3. Чтобы взыскать с вас деньги через суд истцу надо будет доказать что он является правообладателем - зачастую это очень непросто, и не факт что удастся.
    4. В суде придется обосновать сумму требований и доказать что она адекватна, и что именно на такую сумму был нанесен ущерб. А это очень непросто.
    5. Если истец проиграет дело - есть вероятность что его суд заставит оплатить ваши судебные расходы.
    6. Если истец выиграет дело - не факт что его расходы суд заставит оплачивать вас (хотя вероятность есть)
    7. И самое главное даже если истец выиграл дело - не факт что он получит деньги. Скажу вам по секрету - взыскать деньги с ответчика даже при наличии решения суда очень непростое дело. Может у вас просто денег нет - отдадут приставам, и будут они годами взыскивать. Т.е потратить полляма на расходы, а потом годами получать по 3тыс в месяц. Кому это надо?


    Поэтому в суд подать на вас это очень сложно и дорого.


    И еще момент чисто из практики - реальный адекватный правообладатель как правило вежливо просит вас удалить авторский контент с сайта, а в случае если вы не выполните просьбу предупреждает, что будет защищать свои права в порядке искового производства. Но уж никак не будет требовать срочно платить бабло.
    И если в тексте обращения есть требования денег, и слова про нотариально заверенные копии сайта это на 99.9% тупой развод.
    Ответ написан
    16 комментариев
  • Обновить переменную раз в сутки?

    borisdenis
    @borisdenis
    Ленив и вреден...
    1. Проверить дату последнего обновления переменной
    2. Если между текущей датой и датой обновления прошло более суток - обновить переменную и обновить дату обновления.
    Ответ написан
    1 комментарий
  • Как не пускать на сайт при включенном adblock/ublock и прочее?

    @uroot
    Для того, чтобы обойти такие определения на наличие adblock/ublock достаточно просто отключить JS. Но здесь дело в другом. Если лично я вижу такой сайт, то я просто на него больше никогда не вернусь или тем же adblock-ом заблокирую всплывающее окно "Отключите adblock".

    И так сделают многие - они просто не вернутся на ваш сайт.
    Ответ написан
    14 комментариев
  • На какие ресурсы можно скидывать свои работы для критики?

    Kadzi
    @Kadzi
    Ом
    Саша, а зачем тебе ждать критику, будь проактивен. Ведь тебе напишут что "полоска не там", "цвет не тот", а когда тебе скажут что работа - гавно, ты начнешь капризничать и сопротивляться. Предлагаю тебе приручить свое желание делать лучше и добавить щепотку осознанности.

    Весь дизайн одинаковый, новые типы компонентов появляются очень редко, если абстрактно, то сейчас это:

    квадраты, прямоугольники, круги, полоски

    а компоненты — табы, кнопки, формы заявок, заголовки, иконки и так далее. Если округлить любой дизайн - мы увидим там именно это. Чтобы перестать чесать репу над украшательством и думанием "с чего бы мне начать", тебе надо понять что такое сила текста и из каких элементов собирается любой веб-дизайн.

    Брось это дело, ждать, скорее всего ты делаешь всякое говно, но это легко исправимо базовой теорией. Ниже я прикрепляю полезные ссылки, прям полностью потыкай посмотри, а потом ты раскачаешься и воспитаешь в себе чуйку и вкус.

    Базовые элементы верстки (на этой странице читать все ссылки)
    Контур гайды (тут посмотри из каких кирпичей собирают интерфейсы)
    Блог Бирмана(выборочно сначала почитай, что интересно, а потом по ситуации)
    Советы главреда (их много, сразу не осилить, но успешный коммерческий сайт это все еще текст, а текст это типографика. Хороший текст + хорошая типографика и ты уже можешь делать продукты лучше, чем половина нищебродов которые заполонили отрасль)
    Гайды материал дизайн (наблюдай за Романом Камушкеном, если нужно купи его готовую библиотеку компонентов в фигме)
    Искусство мыть слона (потом почекай кто такой этот Головач)

    несколько книг, которые прям апнут тебя:

    А.Горбунов - Типографика и верстка (скачать можно вк или найти в инете)
    Илья Бирман - пользовательский интерфейс (подписка 400р)
    Idea book - графический дизайн
    Пиши, сокращай - Максим Ильяхов

    это хороший базовый набор, +ссылки, что я дал, если не полениться и почитать и вникнуть, через месяца 3, ты будешь понимать как сдизайнить любой компонент, как перестать писать тупой текст и как перестать смотреть у других. Я уверен ты сделаешь просто астрономический рывок в дизайне. Все остальные ссылки тебя будут находить сами, ты как-бы выйдешь на поток, работает довольно интересно.

    и еще, вот примеры дизайн-систем других компаний, посмотри, как это вообще выглядит:

    дизайн-системы 1
    работай в фигме

    бонус:
    главные ошибки дизайна

    p.s становись проактивным, меньше задавай вопросов, сначала пробуй найти ответ сам, засунь подальше тщеславие и просто начни делать фейковые работы. Так ты очень быстро научишься принимать дизайн-решения, а после ссылок у тебя наступит первое просветление (:
    Ответ написан
    5 комментариев
  • Как защитить код сервиса от хостера?

    Stalker_RED
    @Stalker_RED
    Colocation и амбарные замки на серверах.
    Хотя чаще всего применяется метод "неуловимого джо".
    Ответ написан
    Комментировать
  • Как измерить ресурсоемкость (память, cpu) ffmpeg?

    saboteur_kiev
    @saboteur_kiev Куратор тега bash
    software engineer
    все это можно замерить posix командой time. man time.

    /usr/bin/time --format="realCPU %e, userCPU %U, sysCPU %s, peakmemoriy %M" ffmpeg ....


    После завершения будет статистика

    p.s. важно писать /usr/bin/time а не просто time. Встроенная в bash не все умеет.
    Ответ написан
    1 комментарий
  • Как исправить "W: Some index files failed to download. They have benn ignored. or old ones used instead"?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    No space left on device.
    Ответ написан
    Комментировать
  • Почему вместо слова удаляется 60 символов?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    cmp al, 39h ;пробел?

    А почему у вас пробел это 39h, если всегда был 20h?
    Ответ написан
    9 комментариев