• Как можно прикрутить поддержку socks5 ,http,https proxy к Golang скрипту?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    надо кодить, иначе не прикрутить

    например поискать по гитхабу по словам
    socks5 ,https,http

    и скопировать себе
    Ответ написан
    4 комментария
  • Какие лучшие курсы java 2021?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Так же как и в 2020-м - сплошное инфоцыганство и зачитывание учебника с выражением.
    Ответ написан
    Комментировать
  • Как подключитЬся с помощью Golang к другой программе?

    1. Через сетевой протокол на API сторонней программы. (обычно используют JSON RPC, REST, GRPC)
    2. Через вызов клиента другой программы в командной строке из вашего приложения и парсинг вывода.
    3. Вызов функций SDK, предоставленного сторонней программой (обычно через cgo).

    Остальные способы обычно довольно геморойные и редко используются.
    Ответ написан
    Комментировать
  • Почему исходный код языка программирования go написан на go?

    includedlibrary
    @includedlibrary
    Язык программирования же, не может быть написан на своем же языке - это прям похоже на какую-то рекурсию

    Может. Сначала пишем компилятор для нового языка на языке, для которого компилятор уже есть, а потом переписываем его на новом языке. Вообще принято писать компиляторы на языках, для которых они сделаны. Это что-то вроде доказательства, что язык X уже дорос до того, чтобы его можно было использовать.

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

    Почему вы так думаете? Ничто не мешает написать компилятор для компилируемого языка на другом компилируемом языке. И опять же ничто не мешает написать интерпретатор на интерпретируемом языке
    Ответ написан
    2 комментария
  • Почему исходный код языка программирования go написан на go?

    DevMan
    @DevMan
    google -> self-compiling compiler
    в частности https://ru.m.wikipedia.org/wiki/Раскрутка_компилятора
    Ответ написан
    Комментировать
  • JS:Angler-T что с этим делать?

    XOR2048
    @XOR2048
    Web & Browser extension developer
    JS:ScriptIP-inf — это вредоносная программа, которая работает как троянский конь. Это означает, что эта кибер-угроза может войти в систему, притворяясь полезной программой, обновлением или файлом. Однако после установки она может привести к появлению в системе потенциально нежелательных программ (ПНП), шпионов или других вредоносных программ. Кроме того, возможности отслеживания паразита могут привести к потере вашей личной информации, такой как пароли, логины, финансовая информация и так далее. Наиболее важной особенностью JS:ScriptIP-Inf [Trj] вируса является то, что он может блокировать антивирусное программное обеспечение, чтобы скрыть себя в системе.

    Это аналог того же вируса, который вы написали.
    Источник

    Проблема может быть в самом Антивирусе, он видит вредоносный код, который таковым не является, чтобы показать свою полезность или в коде есть строки похожие на вирусные.

    UPD - на разных форумах пишут, что это распространенная проблема у Avast, видеть Trojan там, где его нет. Совет - используйте другой Антивирус
    UPD 2 - если хотите быть уверены в безопасность скачанного файла/веб-ресурса, то закиньте его на VirusTotal
    Ответ написан
    Комментировать
  • Безопасен ли домашний проброс портов?

    @Drno
    В целом да, это вектор для аттаки.
    Можно купить нормальный роутер, вместо вашей поделки)

    В данной же ситуации - нахер вы никому не нужны. Открывай спокойно 80 порт на свой ПК, если там конечно есть веб сервер)
    Батя быстрее сам вирусню с инета скачает, чем к вам хакеры придут)
    Ответ написан
  • Как на GO послать сообщение в Телеграм (канал, лично) проще всего?

    1. Создать телеграм-бота, через @BotFather
    2. Получить в процессе создания токен.
    3. Админ должен нажать start в личке с созданным ботом (иначе бот ему не сможет отправлять сообщения).
    4. Используя библиотеку https://github.com/go-telegram-bot-api/telegram-bot-api послать сообщение админу (нужно знать юзерайди админа).
    Ответ написан
    1 комментарий
  • Как с помощью JQUERY перебрать и сложить значение нескольких select?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Как будем складывать значения элементов:

    const sum = elements =>
      Array.prototype.reduce.call(
        elements,
        (acc, n) => acc + (+n.value || 0),
        0
      );

    Сами элементы могут быть представлены как jquery-объект, NodeList или HTMLCollection (ну и разумеется, обычный массив тоже будет обсчитан как надо):

    const $form = $('form').on('change', 'select', () => {
      $('input').val(sum($form.find('select')));
    });

    const input = document.querySelector('input');
    const selects = document.querySelectorAll('form select');
    const onChange = () => input.value = sum(selects);
    selects.forEach(n => n.addEventListener('change', onChange));

    document.querySelector('form').addEventListener('change', function(e) {
      if (e.target.tagName === 'SELECT') {
        document.querySelector('input').value = sum(this.getElementsByTagName('select'));
      }
    });
    Ответ написан
    1 комментарий
  • Можно ли использовать переменную типа string, как название функции и потом вызвать ее?

    Нет, так сделать нельзя, Го не скриптовый язык.

    Но саму функцию в переменную положить можно. И потом вызвать.

    https://go.dev/play/p/dkF1s6ENnjA
    func main() {
    	fn := some
    	fmt.Println(fn())
    	fn = other
    	fmt.Println(fn())
    }
    
    func some() int {
    	return 1
    }
    
    func other() int {
    	return 2
    }
    Ответ написан
    Комментировать
  • Как сделать автоматическое заполнение форм на сайте через скрипт Golang?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Можно использовать встроенную функцию, так будет надёжнее:
    formData := url.Values{}
    formData.Set("user_forms[0][name]", authDate.fName)
    ...
    resp, err := http.PostForm(postUrl, formData)


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

    Для решения такой задачи будет лучше использовать какой нибудь web scraping framework.

    Например:
    https://github.com/gocolly/colly
    https://github.com/anaskhan96/soup
    Ответ написан
    2 комментария
  • Зачем нужны интерфейсы в go?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    В вашем примере не хватает самого важного, чтобы стало понятно - вызова функции с параметром типа интерфейс.
    func someFunc(numbers NumberInterface) {
       numbers.Sum()
    }


    Если не будет интерфейсов - вы можете передать только конкретный тип Numbers.
    А если вы создадите тип Numbers2 - то вы не сможете передать его в туже функцию, у которой тип аргумента Numbers.
    Эта проблема отлично решается при помощи интерфейсов.
    Ответ написан
    4 комментария
  • Зачем нужны интерфейсы в go?

    vabka
    @vabka
    Токсичный шарпист
    Интерфейсы нужны для полиморфизма.
    Конкретно в твоём случае да - разницы нет.
    Но чисто в теории ты бы мог сделать вот так:
    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);
    });
    Ответ написан
    Комментировать