Задать вопрос
  • Какую операционную систему поставить?

    @Drno
    идешь на сайт производителя ноутбука, ищешь свой ноутбук
    смотришь есть ли там драйвера под винду, если да - ставь
    Ответ написан
    3 комментария
  • Как правильно настроить nginx для сервера написанного на go?

    jamakasi666
    @jamakasi666 Куратор тега Linux
    Просто IT'шник.
    Могу посоветовать перейти на caddy вместо nginx. Он очень сильно проще и множество вещей включены по умолчанию сразу. Как пример он сам будет получать сертификаты и обновлять их, может и самоподписанный сертификат гонять самже. По умолчанию сразу пробрасываются все хедеры вебсокеты и прочее. В общем оно очень простое и удобное при этом мощное.
    Как пример, все с чем вы мучаетесь выше в реалиях caddy выглядит так.
    golanghelloworld.hackersandslackers.app {
    	reverse_proxy 127.0.0.1:3002
    }


    Дополнительное могу порекомендовать не использовать имя localhost а использовать напрямую 127.0.0.1.
    В коде вообще лучше слушать на всех интерфейсах, т.е. использовать такую запись
    http.ListenAndServe(":3002", nil)
    Ответ написан
    2 комментария
  • Как из HTML передать массив в JS?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    value текстового поля ввода это просто строка текста, что бы там ни вводили.

    Я бы не ждал от пользователя знания синтаксиса JSON массивов JavaScript со всеми этими квадратными скобками, и позволил вводить числа через запятую и, может, ещё пробел.

    Строку текста можно разбить в массив методом split():
    const str = '1,2, 3,   4'; // то, что забрали из value инпута
    const separator = /,\s*/; // рег. выражение: запятая и потом 0 или больше пробелов
    const arr = str.split(separator); // [ "1", "2", "3", "4" ]
    тут ешё один подвох: элементы массива по-прежнему строки. Не число 1, а строка "1".

    Перевести элементы массива в числа можно, например, функцией Number(). Нужно каждый элемент получившегося массива прогнать через эту функцию. Для этого есть метод массива map():
    const arr = str
      .split(separator)
      .map(Number); // [ 1, 2, 3, 4 ]
    вот теперь больше похоже на желаемый, наверное, результат?
    Ответ написан
    1 комментарий
  • Есть ли смысл писать на go под мобильные платформы?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Я пишу бэк на Go/NodeJs, а сами мобильные приложения на Java/Kotlin.
    Тебе надо определиться, что ты хочешь - писать бэк или мобилки
    Ответ написан
    2 комментария
  • Какой из команд обновить ветку относительно основной?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Единственно правильного способа нет, их несколько и все могут быть правильными, в зависимости от того, чего вы хотите добиться и как принято работать в вашем проекте/команде.

    Итак, сейчас вы находитесь в своей тематической ветке #1234 и вызвали контекстное меню основной ветки develop.

    Compare with "#1234"
    — сравнить ветку на которую вы кликнули (это develop) с текущей веткой #1234

    Rebase "#1234" onto "develop"
    — пересоздать/пересобрать тематическую ветку #1234 поверх (onto) актуальной ветки develop. Будет выглядеть как если бы вы создали свою ветку только что, и она по определению будет содержать все актуальные изменения основной ветки. Этот способ годится только если вы работаете один в тематической ветке, потому что мы фактически удаляем её и создаём новую. Если ветка общая, то в репозиториях коллег ничего автоматом не перестроится.

    Merge "develop" into "#1234"
    — забрать изменения из develop в нашу (into) ветку #1234 путем создания коммита слияния (merge commit). Такой способ способ обычно используют для синхронизации долгоживущих общих веток.
    Ответ написан
    1 комментарий
  • Как на GO послать сообщение в Телеграм (канал, лично) проще всего?

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

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

    AleksandrB
    @AleksandrB
    Совсем недавно вывел "Hello world"
    Пользуюсь pro 13 20 года с 16 гб, основа - веб разработка (phpstorm, docker, pycharm). Никаких проблем не испытываю от слова совсем (можно притянуть за уши то что батареи при работе с докером хватает на полтара часа, но у знакомого новый macbook m1 pro, с той же нагрузкой на 4 часа хватает).
    У m версии были траблы с докером по началу (сейчас вроде лучше). Касаемо оперативки, у m1 потребление, на сколько знаю, оптимальнее.
    В конечном счете, если бы я сейчас выбирал, то взял бы pro (лучше видео, экран), если мне не принципиально время работы. Ну или новые pro с m1.
    Ответ написан
    1 комментарий
  • Как в GO pool worker остановить горутины?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Доработать worker pool:

    Внутри каждой горутины слушать ctx.Done из context.context, который вы передадите в каждую рутину, кроме того еще создать cancel() функцию, которую вы будете вызывать в случае если вам надо...

    При вызове данной функции все горутины получат уведомление в select и завершатся.

    Как будет выглядеть горутина: бесконечный цикл, внутри селект на ваш канал с jobs и на ctx.Done(), если ctx.Done() не пришел (вызван будет например ошибкой в др местах), то будет читаться канал с джобами, но если придет ctx.Done() , то делать return

    for {
         select {
         case job := <-jobs:
                // work with job
         case <-ctx.Done():
              c.logger.Errorf("shutdown cancelled: %v", ctx.Err())
              return // выход из горутины
          }
         }
    }
    Ответ написан
    Комментировать
  • Выполнение/вызов функции из Go файла при нажатии на кнопку html?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Алгоритм у вас будет примерно таким...
    При нажатии на кнопку у вас будет вызвана функция (обработчик события onClick у кнопки).
    В этой функции вы сделаете AJAX запрос по протоколу HTTP на ваш сервер, где запущено ваше ПО на Go.
    В main.go вы запускаете HTTP сервер, который примет запрос от вашей функции JavaScript, обработает его и ответит.

    Разберём самый простой вариант с методом GET, чтобы вам было проще тестировать.

    На сервере (своём компьютере) запускаете main.go примерно такого содержания
    package main
    
    import (
        "fmt"
        "net/http"
    )
    
    func helloHandler(w http.ResponseWriter, req *http.Request) {
        fmt.Fprintf(w, "hello\n")
    }
    
    func main() {
        http.HandleFunc("/hello", helloHandler)
    
        http.ListenAndServe(":8081", nil)
    }

    Этот сервис будет слушать порт 8081 любого IP адреса на сервере, где будет запущен.
    Предположим, что вы тестируете на своём компьютере, в этом случае для проверки вам нужно в браузере откройте url `127.0.0.1:8081/hello`
    После этого вы должны увидеть в ответе просто текст: "hello".
    Когда этот этап будет завершен - вы сможете перейти к вызову этого URL уже из JavaScript.
    Для этого можете использовать то, что вам привычнее, если такого нет - можете воспользоваться этим примером
    const req = new XMLHttpRequest();
      const url='http://127.0.0.1:8081/hello';
      req.open("GET", url);
      req.send();
      req.onreadystatechange=(e)=>{
        console.log(req.responseText)
      }

    PS: Если не понятно или что-то не получится - пишите, помогу разобраться.
    Ответ написан
    21 комментарий
  • Как почистить Git-репозиторий?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Вот несколько фактов, которые помогут понять как работает Git.
    • Файл .gitignore действует только на ещё не отслеживаемые файлы.
    • Файл .gitignore предназначен для описания того, что мы не хотим СЛУЧАЙНО добавить в репозиторий. Либо не хотим случайно удалить переключив ветку.
    • Мы можем ПРИНУДИТЕЛЬНО добавить в репозиторий ЛЮБОЙ файл, даже если он описан в .gitignore.
    • Добавление файла в .gitignore не удалит сам файл из репозитория. Если файл УЖЕ в репозитории, то он продолжит отслеживаться, независимо от наличия .gitignore.
    • Если больше не хотим отслеживать какой-то файл, то просто удаляем его из репозитория. Ключ --cached позволит оставить файл в рабочем каталоге текущего репозитория если он нужен.
    git rm --cached -- '.DS_Store'
    git commit

    Но последний рецепт сработает только на одном компьютере. Если коллеги переключатся на этот коммит, то файл удалится у них из рабочего каталога.
    Ответ написан
    4 комментария
  • Здравствуйте столкнулся с проблемой, хочу написать прогноз погоды на телебот на мой код не работает?

    GavriKos
    @GavriKos
    хочу написать прогноз погоды

    как это сделать

    запрограммировать.

    Вот честно. Хотите написать - пишите. Хотите чтобы за вас написали - платите. Где ваши попытки написать что то, алгоритмы, хотя бы измышления как эту проблему решить?
    Ответ написан
    Комментировать
  • Зачем нужны "ссылочные" методы и почему они не удовлетворяют интерфейсам?

    WinPooh32
    @WinPooh32
    Stack Overflow answer searching expert
    *Human и Human это два абсолютно разных типа данных.
    Значит и реализацию для интерфейсов для каждого типа надо делать отдельно.

    *Human - указатель на значение типа Human.
    Ответ написан
    Комментировать
  • Как сделать вывод данных после ввода с использованием рекурсии(без циклов и goto)?

    includedlibrary
    @includedlibrary
    Без циклов никак. Нужно сохранять ответы в массив, а потом их по очереди выводить. Для этого собственно и нужен будет цикл
    Ответ написан
    Комментировать
  • Как создать мобильное приложение для управления бойлером?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    В теории все достаточно просто. Работа делится на три независимые группы: серверная часть (S), контроллер (C), приложение (A).
    1) Все три части обмениваются информацией:
    - S -- C - описываете протокол взаимодействия и передаваемые структуры данных. Например протокол REST, данные в JSON, формат данных такой-то, ответы такие-то, эндпоинты такие-то и для того-то. Ну или протокол MQTT, схема очередей такая-то, данные такие-то...
    - S -- A - протокол GraphQL, схема такая-то...
    2) Создаете тестовые данные и тестовые ответчики с развертыванием архитектуры (или без развертывания)
    3) Передаете все это разработчикам
    4) Есть что идет не так, данных там не хватает, в форматы не помещаетесь - пишете задачу и согласуете прямо с пункта 1), то, что не согласовано
    5) Согласовывать нечего, принимаете продукт, проверяя его на тестовых данных пунктов 1) и 2)
    6) Готовый продукт передаете заказчику
    7) Если что-то идет не так, возвращаетесь на пункт 4)
    Ответ написан
    9 комментариев
  • Как в GO вывести в template struct?

    @ghostiam
    На Go писатель, серверов пинатель.
    Поля структуры должны быть экспортируемые (Начинаться с заглавной буквы), тогда будет доступ к этим полям из шаблона.
    Ответ написан
    1 комментарий
  • Golang. Вызвать функцию из другого файла

    Tyranron
    @Tyranron
    Если файлы лежат в одной директории и оба в package main, то никаких проблемы быть не должно, даже если именуете с маленькой буквы.
    Подозрвеаю что проблема в способе запуска программы. Для go run такое не прокатит, он умеет цеплять только одиночные файлы. Нужно скомпилить директорию и должно быть все в порядке.
    Ответ написан
    1 комментарий
  • Как контролировать открытие двери холодильника в оповещениями?

    GavriKos
    @GavriKos
    Самое простое - начните с ардуины +доп.модулей типа термодатчика, геркона и вайфайки. Это самый быстрый вариант.
    Ответ написан
    Комментировать
  • Почему не хочет вытаскивать данные ИЗ бд или не работает переменная?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1)
    WHERE `ID`={$_GET['id']}
    за такое в приличном обществе бьют клавой по кумполу, до полного просветления.
    2) есть важнейшая функция, которую почему то все новички игнорируют - var_dump(); 100% решает проблемы, главное - правильно и часто использовать.
    3) Если есть запрос и возникает проблема с его использованием - выводите запрос (как строку) и запускайте этот запрос "вручную", например через пхпмайадмин.
    4) Вангую что вывод ошибок и варнингов у вас выключен. Смотрите логи или включите вывод ошибок.
    Ответ написан
    1 комментарий
  • Как получить значение свойства элемента по ID в Битрикс?

    gromdron
    @gromdron
    Работаю с Bitrix24
    Метод GetByID не возвращает свойства элемента, а является простой прослойкой для getList запрашивающий все свойства.

    Явно используйте CIblockElement::getList для получения свойств

    $resElement = \CIBlockElement::GetList(
        [],
        [
            'IBLOCK_ID' => 5,
            'ID' => 371,
        ],
        false,
        false,
        [
            'ID',
            'IBLOCK_ID',
            'PROPERTY_SLOGAN',
            'PROPERTY_COPY'
        ]
    );
    
    if ( !($element = $resElement->getNext() ) )
    {
        echo "Элемент не найден";
        return;
    }
    
    var_dump($element);
    Ответ написан