Задать вопрос
  • Зачем нужны интерфейсы в go?

    Интерфейсы нужны для полиморфизма.
    Конкретно в твоём случае да - разницы нет.
    Но чисто в теории ты бы мог сделать вот так:
    type Numbers struct {
      Num1 int
      Num2 int
    }
    
    type ThreeNumbers struct {
      Num1 int
      Num2 int
      Num3 int
    }
    
    func (n Numbers) Sum() int {
      return n.Num1 + n.Num2
    }
    
    func (n ThreeNumbers) Sum() int {
      return n.Num1 + n.Num2 + n.Num3
    }
    
    func SumAll(numbers NumberInterface) int {
      return numbers.Sum()
    }

    Функция SumAll будет работать с любыми типами, которые реализуют интерфейс NumberInterface, причём даже если они сами об этом не в курсе, благодаря утиной типизации.
    Ответ написан
    3 комментария
  • Как заставить скрипт в Linux испольняться просто набрав его имя в терминале?

    @AVKor
    1. Добавить в самое начало скрипта шебанг: #!/usr/bin/env bash
    2. Дать права на выполнение: chmod +x /path/to/run.sh
    3. Поместить в файл ~/.bash_aliases строку alias run='/path/to/run.sh'
    Ответ написан
    3 комментария
  • С чего начать в 30 лет?

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

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

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

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

    gbg
    @gbg
    Любые ответы на любые вопросы
    1) нет, понимаете неправильно. То что получилось - это комплексное число (в википедию, если не ясно), в котором спрятаны амплитуда и фаза самой низкой частоты в преобразовании. Дальнейшие элементы массива - это тоже комплексные числа с амплитудами-фазами.

    Чтобы вытащить из них амплитуды, нужно найти модуль комплексного числа (опять же, см. википедию, как это считать). Для вытаскивания фаз, нужно найти аргумент комплексного числа.

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

    2) А тут надо почитать базовые учебники по ML. Нишант Шакла, написал хороший, например.
    Ответ написан
    1 комментарий
  • Почему не работает sticky?

    Не знаю почему, но методом исключения заметил, что это свойство не работает из-за наличия следующего правила
    html, body {
        overflow-x: hidden;
    }

    P.S. Если задать его не обоим тегам сразу (HTML и body), а только одному (например, только body), то блок с position:sticky работает корректно
    5d8600e7e43c1399885343.png

    Результат, если это правило закомментировать (всё работает)
    https://codepen.io/hisbvdis/pen/BaBvKaa
    Ответ написан
    2 комментария
  • Bash-скрипт: как заменить данную строку в файле на переменную?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    В данном конкретном случае намного более адекватным было бы использовать include в nginx.conf отдельного конфига, который генерировать скриптом.
    Ответ написан
    Комментировать
  • Какие права выставить на файл sqlite базы?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Лучше не "ставить из пакета". Это лишает смысла проверку целостности пакета по контрольным суммам, усложняет установку обновлений. Поэтому правильнее иметь некую "эталонную" базу, которую копировать в целевое размещение. Как вариант, в пакете держать .sql (.sql.gz) для инициализации базы. Саму инициализацию делать скриптом (как initdb в postgres) или описать в инструкции что куда скопировать/выполнить. К слову, для процесса обновления тоже может потребоваться механизм, так как структура данных может меняться в новых версиях. Процесс первичной инициализации и последующего обновления можно сделать частью post-install скрипта пакета.

    Базу следует класть не в /usr (в классической теории UNIX-систем /usr может вообще монтироваться в read-only, например, по nfs), а в /var, лучше /var/lib/имя_программы. Сделать специальную системную группу без пользователей вполне нормально, так делают. В инструкции следует описать, что пользователей надо в неё добавлять. Соответственно, на файл права 660, на каталог 770.

    Если пользователи будут работать с этой базой параллельно-одновременно, а не строго по очереди, то потребуется ещё механизм блокировок. В этом случае лучше рассмотреть полноценную СУБД или хотя бы вынести работу с базой в отдельный сервис, с которым программа будет взаимодействовать.
    Ответ написан
    7 комментариев
  • Как отсортировать массив пар [ключ, значение]?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const sorted = (arr, key) => arr
      .map(n => [ key(n), n ])
      .sort(([a], [b]) => a < b ? -1 : +(a > b))
      .map(n => n[1]);

    Так как сортировка сбивается из-за наличия нечисловых символов в начале некоторых строк, просто вырежем их:

    const sortedArr = sorted(arr, n => n[0].replace(/^\D+/, ''));

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

    const sortedArr = sorted(arr, n => {
      const d = n[0].match(/\d+/g);
      return +d[0] + +d.at(-1);
    });
    Ответ написан
    Комментировать
  • Как исправить нечитаемое имя отправителя и получателя почтового сообщения?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    ?utf-8? - исходная строка была в кодировке UTF-8.
    ?B? - закодировано в Base64.
    0KnQtdC/0LAg0KHQзtdGA0LPQtdC5 - сама строка в Base64.
    print base64_decode('0KnQtdC/0LAg0KHQзtdGA0LPQtdC5'); // Щепа Сергей

    Кроме Base64 может встретиться кодировка Quoted-printable, обозначаемая как ?Q?. В этом случае заголовок будет выглядеть как
    ?utf-8?Q?=D0=A9=D0=B5=D0=BF=D0=B0 =D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9?=

    Ну и кодировка исходной строки может быть любая. Для перекодирования можно использовать iconv().
    Ответ написан
    Комментировать
  • Нужно ли открывать файлы стилей в роботс?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Вот вопрос - есть ли в этом логика и насколько сильно влияет на SEO?
    Любой современный робот оценивает юзабилити, в частности скорость загрзки, контент лэйаут шифтинг, расположение ключевых элементов и т.д., что можно посмотреть в том же гугл пэйджспид. Ясное дело что без цсс и жс он этого просто не увидит. И да, гугл учитывает все это в ранжировании.
    Ответ написан
    Комментировать
  • Существуют ли компании, где нет перерывов в работе?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    В нормальных компаниях не следят с секундомером за работой сотрудников. Если от вас ждут нажимания кнопок 40 часов в неделю, а не выдачу запланированного объёма продуктов/решений, то надо бежать.
    Ответ написан
    1 комментарий
  • Существуют ли компании, где нет перерывов в работе?

    Natebash
    @Natebash
    React, Vue, Angular, Navite JS, Python / Node JS
    Похоже на описание концлагеря) Сейчас большинство айтишных компаний практикуют удаленную работу, тем самым снижая финансовую нагрузку(условие наличия большого офиса, снеков, и прочего). У адекватной компании - вы закрываете таски - вы молодец, когда вы их закрываете - ваше дело. У нас условие - 4 часа пересечения общего времени с командой. К примеру я встаю в 5, в 6 уже на работе, в 2 заканчиваю работать. Далее "свободное время"

    Ищите компанию где не будет такого идиотизма)
    Ответ написан
    1 комментарий
  • Как защитить вёрстку своего макета от "плагиата"?

    DevMan
    @DevMan
    никак. принять как данность.
    Ответ написан
    Комментировать
  • Как убрать все вендорные префиксы?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    Прогоните CSS через Autoprefixer с параметром:
    >100%

    Тем самым получите на выходе вот такой результат:
    5c2ec261e28bc331351044.jpeg
    Ответ написан
    1 комментарий
  • Какой тег использовать, что бы получить структуру?

    type Event struct {
        Preview     Image      `json:"preview"`
        Images      []string   `json:"images"`
    }


    Ну или если очень хотите отдельный тип, то:
    type Image string
    Ответ написан
    Комментировать
  • Как увеличить растояние подчеркивания у ссылок, которые состоят из нескольких строк?

    trushka
    @trushka
    можно с помощью linear-gradient. Только в ссылку span вложить пийдётся, чтоб растянуть по высоте строку, не увеличивая шрифт. Line-height только расстояние между строками увеличивает..
    https://jsfiddle.net/thu0wxba/
    Ответ написан
    1 комментарий
  • Как отключить Tab на сайте?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    Не рекомендую так делать. Многим удобнее делать навигацию по сайту с помощью Tab, чем мышью. А ты просто ее отключишь

    window.onkeydown = evt => {
        if (evt.key == 'Tab') {
            evt.preventDefault();
        }
    }
    Ответ написан
    4 комментария
  • Как внедрить в Го проект Vue компоненты?

    Fragster
    @Fragster
    помогло? отметь решением!
    Делай на го api (rest или json rpc), а на vue фронт, который взаимодействует с этим api. прям совсем в разных папках и независимо друг от друга.
    Ответ написан
    9 комментариев
  • Как ставить nginx, в контейнер или просто на сервер?

    akelsey
    @akelsey
    Все предложенные варианты имеют право на жизнь.
    Но я за контейнеризацию, т.к. плюсы размещения в контейнере очевидны, вся конфигурация приложения при следовании лучшим практикам находится в одном месте, например:
    /opt/docker-compose/
    в котором есть список ваших приложений, например:
    nginx-reverse/
    certbot/
    nodejs-front/
    nodejs-back/
    something-else/

    Такая компоновка обеспечит более легкий деплоймент в пайплайне (ci/cd), да и ручной перенос с хостинга на хостинг. Локальное тестирование тоже проще осуществить.
    Ответ написан
    1 комментарий
  • Как стим защищает игру от пиратского распостранения?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Ответ написан
    Комментировать