• Как правильно реализовать чтение продуктов с сервер?

    @Dementor
    программист, архитектор, аналитик
    Все в целом звучит как "сделайте мою работу".

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

    Где правильно хранить json, какие языки использовать?
    Снова таки, если от вас требуют хранить данные в определенном месте и использовать определенный язык, то правильным будет - следовать этим требованиям. Иначе храните как вам удобно и используйте те языки, которые знаете.
    Ответ написан
    Комментировать
  • TeamViewer на роутере?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Жёстко, но работоспособно на 100%.

    Нет. Не на роутере TeamViewer, а в провайдерской сети.

    С роутера уходит во внутреннюю сеть провайдера, а там ещё один шлюз пропускает в ещё одну подсеть. И уже там этот хост (192.168.0.10).

    Лучше не пробовать адреса не из своей сети: расценят как сканирование и останетесь без инета.
    Ответ написан
  • Гоуротины, каналы, не полностью отрабатывает, как разобраться?

    Ваша программа завершается до того, как zipMaker() успевает обработать все данные: функция main завершается сразу после того, как завершается выполнение цикла.

    Есть несколько вариантов решения этой проблема, какой выбрать, зависит от задачи:
    1) если у вас программа должна работать постоянно, то тогда можно просто залочить ей выполнение. Например, так:
    func main() {
         // your code
    
        locker := make(chan struct{})
        <-locker
    }

    2) если же вам нужно обработать конечное количество изображений, то нужно переработать код. По моему мнению, не нужно вызывать httpGet() и parser() в горутинах. Лучше возвращать []Gallery, после чего проходиться по нему и вызывать горутину для каждого элемента. При этом нужно воспользоваться sync.WaitGroup. Код будет выглядеть примерно так:
    package main
    
    import (
        "log"
        "sync"
        "time"
    )
    
    // Для удобства
    type Gallery int
    
    func main() {
        // То, что должна вернуть функция parser()
        results := []Gallery{5, 6, 7, 8}
    
        var wg sync.WaitGroup
        for _, r := range results {
            wg.Add(1)
            go zipMaker(r, &wg)
        }
     
        log.Println("Wait")
        // Ждём выполнения горутин
        wg.Wait()
        // "Done" напечатается через 2 секунды после "Wait"
        log.Println("Done")
    }
    
    func zipMaker(g Gallery, wg *sync.WaitGroup) {
        defer wg.Done()
        // your code
    
        time.Sleep(time.Second * 2)
    }


    sync.WaitGroup позволяет ждать обработки всех данных. Подробнее можно почитать тут.
    Ответ написан
    3 комментария
  • Как в Go логировать ошибку (Panic И др) при которой падает сервер?

    @babderos Автор вопроса
    Нашел решение

    Для unix систем создается функция
    func redirectStderr(f *os.File) {
        err := syscall.Dup2(int(f.Fd()), int(os.Stderr.Fd()))
        if err != nil {
            log.Fatalf("Failed to redirect stderr to file: %v", err)
        }
    }


    И потом в main() запускаю перенаправление вывода ошибок в файл или Stdout
    redirectStderr(os.Stdout)
    Ответ написан
    Комментировать
  • Как распарсить XML в Go?

    https://play.golang.org/p/mC_B9Qzjvt5
    package main
    
    import (
    	"encoding/xml"
    	"fmt"
    )
    
    type Property struct {
    	Name  string `xml:"name,attr"`
    	Value string `xml:",chardata"`
    }
    
    type Object struct {
    	Properties []Property `xml:"PROPERTY"`
    	Basetype   string     `xml:"basetype,attr"`
    	Name       string     `xml:"name,attr"`
    	Oid        int        `xml:"oid,attr"`
    }
    
    type Response struct {
    	XMLName xml.Name `xml:"RESPONSE"`
    	Objects []Object `xml:"OBJECT"`
    }
    
    func main() {
    	data := []byte(`<RESPONSE>
        <OBJECT basetype="status" name="status" oid="1">
          <PROPERTY name="response-type">success</PROPERTY>
          <PROPERTY name="response-type-numeric">0</PROPERTY>
          <PROPERTY name="response">0f738648db95bb1f6ca37f6b8b5aafa8</PROPERTY>
          <PROPERTY name="return-code">1</PROPERTY>
        </OBJECT>
    </RESPONSE>`)
    
    	var res Response
    	err := xml.Unmarshal(data, &res)
    	if err != nil {
    		panic(err)
    	}
    
    	fmt.Printf("%+v\n", res)
    }
    Ответ написан
    1 комментарий
  • Как пингануть адрес в локальной сети?

    Olek1
    @Olek1
    В библиотеке стандартной этого сделать невозможно, вы можете воспользоваться так: https://github.com/tatsushid/go-fastping

    Заметьте: что отправка ICMP пакетов требует root привилегий

    https://godoc.org/golang.org/x/net/icmp
    https://en.wikipedia.org/wiki/Internet_Control_Mes...

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

    out, _ := exec.Command("ping", "192.168.0.111", "-c 5", "-i 3", "-w 10").Output()
    if strings.Contains(string(out), "Destination Host Unreachable") {
        fmt.Println("TANGO DOWN")
    } else {
        fmt.Println("IT'S ALIVEEE")
    }

    отзовитесь было ли это полезным
    Ответ написан
    6 комментариев
  • PayPal. Payout API. Что означают статусы транзакций?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    • NEW. не видел, но прогеры, может, видели, (допускаю, что есть в мерчант акке пейпала), это когда реквзиты верны, но пеймент не завершнен
    • SUCCESS. платеж завершен. Деньги вам на счет. Они могут быть отрефанжены и отчарджбечены. Кажется,
      чардж идет отдельной транзакцией. Если платите вы - то да, окончательно ушло
    • DENIED. это когда получаетедю запрещен прием, либо Украина, либо заблочен акк, любо приостановлен.
    • PENDING. кого-то ждем. Обычно при исходящих в масспее. При входящих бывает на всякие еЧеки.
    • FAILED. не прошло. Надо инициировать снова. Само не инициируется.
    • UNCLAIMED. не завершен. При исх - когда хитрые трансграны либо с карты, при вход не помню, но тоже чеки и такое прочее
    • RETURNED. Возвращен в том числе пейпалом - послали на новый акк, а он раз -и попал под Денайд(на момент отправки еще не было статуса, обычно Украина так идентится или Индия), тогдп пейпал его вернул
    • ONHOLD. это когда много транз будет , пейпал на вас навесит, все новые будут шуровать в холд, но не превышая объема.
    • BLOCKED. не сталкивался, но наверно при приостановленном, чтобы не денайд.
    • REFUNDED. возвращен, окончательный.
    Ответ написан
    2 комментария
  • Сохранить состояние форм?

    @vanillathunder
    Можно сохранять данные форм в localstorage.
    localStorage.setItem(key, value); //записать значение поля сюда
    Ответ написан
    Комментировать
  • Как коректно спросить о том куда расти для повышения ЗП?

    gubin_niko
    @gubin_niko
    Я могу лишь своё мнение озвучить, основанное на практике.

    Всегда говорю прямо и без ужимок. Подхожу к начальству и спрашиваю: "Дружище, какой план мне нужно сдавать, чтобы получить больше денег?". Волнения и переживания нужно забыть, это точно не будет плюсом, ибо руководство такие же люди, которые также могут воспользоваться психологическим состоянием и уйти в сторону от разговора. Или вообще послать.

    Ещё посмею дать совет. Развивайтесь дальше, изучайте свою сферу глубже и шире, задевайте смежные, изучайте иностранные языки и другие языки программирования. Когда будете иметь каждый месят по десятку новых предложений и по 1-2 горячему оферу, уже никаких переживаний не будет, а при отказе поднять ЗП можно смело уходить к конкурентам. Отрастите зубы, чтобы не сосать, а грызть))
    Ответ написан
    16 комментариев
  • Тестовые задания по nodejs для новичка?

    mannaro
    @mannaro Куратор тега JavaScript
    Умею профессионально гуглить
    Есть прикольное задание, которое нашел как-то на просторах интернета:

    Управление виртуальным центром запуска ракет.
    Есть несколько баз (при запуске сервера они "создаются" заново).
    Нажимаешь кнопку, выбираешь цель и ракета летит, транслируя свои координаты на клиент (+ оставшееся время).
    В момент полета может произойти авария и ракета не долетит, надо чтобы это выводилось пользователю в браузер.
    Когда ракета долетает, то базе наносится урон (вычисляется случайно). Когда у базы жизней < 0 игра считается завершенной и пользователю об этом показывается сообщение при загрузке страницы.
    Все это на сервере работает через JSON, а на клиенте через react/angular/custom и обновляется в реалтайме через long-polling или websocket.

    интерфейс - просто выпадающий список, а после нажатия на кнопку один див с координатами, второй с оставшимся временем.
    Ответ написан
    Комментировать
  • Как можно ограничить доступ к телеграмм боту?

    @nllm
    Да, сделай белый список с id пользователей, кому есть доступ к боту.
    Не ник, а именно id
    Ответ написан
    Комментировать
  • Как создать новый домен, способный работать с учетными записями старого - Windows Server 2012r2?

    Sergey-S-Kovalev
    @Sergey-S-Kovalev
    Sysadmins team leader
    Вам поможет Profile Wizard

    Он перебивает SIDы в профиле, в итоге новый профиль не создается.
    Ответ написан
    Комментировать