• Как в Golang подключиться к Microsoft analysis services?

    tsklab
    @tsklab Куратор тега SQL Server
    Здесь отвечаю на вопросы.
    Ответ написан
    Комментировать
  • Как подключиться к nats в kubernetes?

    Из своего приложения развернутого в кубе подключаться на test-streaming:4222 или test-streaming.<namespace>:4222 если nats и ваш сервис в разных неймспейсах
    Ответ написан
    1 комментарий
  • Какой sql запрос построить?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    and t1.номер_детали != t2.номер_детали AND t2.номер_детали != t1.номер_детали
    заменить на
    and t1.номер_детали < t2.номер_детали
    Ответ написан
    3 комментария
  • Пойдет ли оперативная память?

    @maximsemin23
    Запустится, но работать будет на частоте 3200, т к r5 3600 поддерживает только 3200
    Ответ написан
    Комментировать
  • Есть 2 варианта кода. Во 2-м варианте при определённом положении оператора return в ветвлении if-else программа выдает ошибку, почему?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Полностью согласен с тем, что написали мои коллеги.
    От себя добавлю, что ваш код можно несколько упростить. Если вам придется сравнивать не 2 или 3 фильма, а допустим штук 100, то вы просто с ума сойдете для каждого из них подбирать комбинацию и строить ветки if else. А значит, должно быть другое "общее" решение.
    Можете ознакомиться с одним из вариантов решения с помощью, которого вы можете сравнить сколько угодно фильмов и без всякого if .. else:
    import java.util.Arrays;
    
    public class Main {
    
        public static void main(String[] args) {
            // Создаем фильмы
            Cinema cinema1 = new Cinema("Титаник", 2194);
            Cinema cinema2 = new Cinema("Аватар", 2810);
            Cinema cinema3 = new Cinema("Тёмный рыцарь", 1084);
            Cinema[] cinemas = new Cinema[]{cinema1, cinema2, cinema3};
            // Находим фильм с большим доходом
            String cinemaTitle = findHighestGrossingFilm(cinemas);
            System.out.println(cinemaTitle);
        }
    
        /**
         * Метод находит фильм с большим доходом
         * @param cinemas массив фильмов для сравнения
         * @return название фильма с большим доходом
         */
        public static String findHighestGrossingFilm(Cinema ... cinemas) {
            Cinema cinemaWithMaxIncome = Arrays.stream(cinemas).max(Cinema::compareTo).get();
            return cinemaWithMaxIncome.name;
        }
    }
    
    class Cinema implements Comparable<Cinema> {
    
        String name;
        int income;
    
        public Cinema(String name, int income) {
            this.name = name;
            this.income = income;
        }
    
        // Имплементируем интерфейс Comparable и сравниваем income объектов
        @Override
        public int compareTo(Cinema c) {
            return Integer.compare(this.income, c.income);
        }
    }
    Ответ написан
    2 комментария
  • Как организовать работу микросервисов в kafka?

    @Arlekcangp
    Разработчик, Лид, Архитектор ПО
    Мне видится, что правильнее информацию о остатке товара хранить в отдельном сервисе. Пусть это будет сервис 2 А кошелёк и оплату вместе-сервис 3 Так схема будет такой:
    1. Сервис 1 получает запрос
    2. Сервис 1 идет к сервису 2 за информацией есть ли запрошенный товар и если он есть то "резервирует" его.
    3. Сервис 1 отправляет сервису 3 информацию для оформления оплаты.
    4. Если оплата успешна (у пользователя достаточно средств и платёжная система отработала без ошибок) то сервис 1 "подтверждает резерв" товара через сервис 2. В противном случае сервис 1 "возвращает резерв" сервису 2. Резервированый товар не показывается при показе остатков другим пользователям.
    Такая схема напоминает паттерн распределённой транзакции с двух-разным комитом. Поситайте про него. В данном случае использовать Кафку или нет большого значения не имеет, т к кафка-это только канал связи. Все те же самые манипуляции придётся проводить и при использовании обычного рест апи.
    Если же делать синхронно, то в сервисе 1 операции станут последовательными, и микросервисная организация теряет смысл, т к это будет медленнее чем монолит и не масштабируемо. Но для такого усложнения должны быть объективные причины - высокая нагрузка. Если же еë нет то монолит проще и дешевле.
    Ответ написан
    4 комментария
  • Как организовать работу микросервисов в kafka?

    Почему Kafka? Почему микросервисы?
    1. Принимает запрос и отправляет его в kafka.
    От кого принимает и каким образом? Какой выдается ответ и каким образом?
    Нужно разделить интернет-магазин на логические части. Проверить какие запросы могут обслуживаться синхронно, а какие - отложенно (асинхронно).
    Когда на складе остается мало товара, пользователь должен знать об этом. Еще можно показывать наличие товара только если имеется свыше X единиц. А с точки зрения СУБД можно применить оптимистическую блокировку записи.
    Ответ написан
    Комментировать
  • Почему не видит конфиг файл в Docker?

    karabanov
    @karabanov Куратор тега Docker
    Системный администратор
    Не силён в Go, но /configs явно путь от корня, а по факту путь /chupapimunyanya/configs/
    Зайди в контейнер (docker exec -it имя_контейнера sh) и проверь, правильно ли размещены файлы.
    Ответ написан
    1 комментарий
  • Почему не открывается сайт по домену на виртуалке в linux?

    flapflapjack
    @flapflapjack
    на треть я прав
    Ну, во-первых судя по вопросу вы вообще не шарите.
    Во-вторых вы добавили на виртуалке в /etc/hosts хостнейм для адреса. Поздравляю, теперь виртуалка знает о хосте mysite.dev.

    Но ваша хост-машина об этом хосте ничего не знает. Добавьте в C:/Windows/system32/drivers/etc/hosts такую же строку, как в линуксе.

    Не дай бог мне такого девопса ))

    DevOps — методология активного взаимодействия специалистов по разработке со специалистами по информационно-технологическому обслуживанию и взаимная интеграция их...


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

    Вам не то что далеко, вы вообще с конца начали)
    Ответ написан
    1 комментарий
  • Работа с goroutines?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Есть несколько вариантов решения задачи
    передавать не указатель, а значение

    package main
    
    import (
      "fmt"
      "time"
    )
    
    var c = make(chan int, 3)
    var data = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    
    func main() {
      fmt.Println("Hello, playground")
      go save()
      go read()
      time.Sleep(3 * time.Second)
    }
    
    func save() {
      for _, val := range data {
        c <- val
      }
    }
    
    func read() {
      for {
        val := <-c
        fmt.Println("read:", val)
      }
    }

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

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    var c = make(chan *int)
    var data = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    
    func main() {
    	fmt.Println("Hello, playground")
    	go save()
    	go read()
    	time.Sleep(3 * time.Second)
    }
    
    func save() {
    	for _, val := range data {
    	        v := val
    		c <- &v
    	}
    }
    
    func read() {
    	for {
    		val := <-c
    		fmt.Println("read:", *val)
    	}
    }

    передать правильный указатель, на элемент данных

    package main
    
    import (
    	"fmt"
    	"time"
    
    
    var c = make(chan *int, 5)
    var data = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    
    func main() {
    	fmt.Println("Hello, playground")
    	go save()
    	go read()
    	time.Sleep(3 * time.Second)
    }
    
    func save() {
    	for i := range data {
    		c <- &data[i]
    	}
    }
    
    func read() {
    	for {
    		val := <-c
    		fmt.Println("read:", *val)
    	}
    }



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

    Вот пример, который покажет, что адрес всегда один и тот же
    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    var c = make(chan *int, 5)
    var data = []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    
    func main() {
    	fmt.Println("Hello, playground")
    	go save()
    	go read()
    	time.Sleep(3 * time.Second)
    }
    
    func save() {
    	for _, val := range data {
    		c <- &val
    		fmt.Printf("write: %v\n", &val)
    	}
    }
    
    func read() {
    	for {
    		val := <-c
    		fmt.Println("read:", *val)
    	}
    }

    Вывод будет таким (адрес один и тот же)
    Hello, playground
    write: 0xc000094000
    write: 0xc000094000
    write: 0xc000094000
    write: 0xc000094000
    write: 0xc000094000
    write: 0xc000094000
    ...


    А в такой реализации (2й пример)
    func save() {
    	for _, val := range data {
    		v := val
    		c <- &v
    		fmt.Printf("write: %v\n", &v)
    	}
    }

    тут вывод будет таким (каждый раз новый участок памяти)
    Hello, playground
    write: 0xc000094000
    write: 0xc000094010
    write: 0xc000094018
    write: 0xc000094020
    write: 0xc000094028
    write: 0xc000094030

    В третьем варианте тоже будут разные указатели.
    Ответ написан
    5 комментариев
  • Как выполнить функцию через время?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Есть timer запускаете его и подписываетесь на тики соответственно выполняете что то. Это идёт в отдельном потоке и не блокирует юай
    Ответ написан
    Комментировать
  • Как выполнить функцию через время?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    public static void Main(string[] args)
    {
        // подождет 1с и вызовет SomeMethod 1 раз
        var t1 = new System.Threading.Timer(SomeWork, null, TimeSpan.FromSeconds(1), TimeSpan.Zero);
        // подождет 5с и будет вызывать SomeMethod раз в секунду
        var t2 = new System.Threading.Timer(SomeWork, null, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(1));
        Console.ReadKey();
    }
    
    public static void SomeWork(object state)
    {
        Console.WriteLine("work");
    }
    Ответ написан
    5 комментариев
  • Как выполнить функцию через время?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Task.Delay или Thread.Sleep
    Ответ написан
    Комментировать
  • Intel core i3 10100f или ryzen 1600 af?

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

    Если нужен максимально универсальный вариант под апгрейд, то возможны следующие варианты:
    1) Intel 10400F + B560/H570/Z490/Z590 (позволит более гибко настроить память за счет возможности разгона, а затем пересесть на более производительное решение);
    2) Ryzen 7 2700 либо Ryzen 6 3600 + B450/X470/B550 (смотреть какие процессоры и какую память поддерживает мать заранее. На сайте производителя);

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

    Универсальной пилюли здесь нет. Есть задачи и оптимизированность платформы под них. Брать i5 с индексом "K" не вижу смысла (проще позднее обновиться на i7/i9, если производительности будет не хватать).
    Ответ написан
    Комментировать
  • Не видит провод интернета после смены видеокарты?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Универсальный ответ на все случае - LiveCD дистрибутив Linux. Качаете на флешку -> загружаетесь. Таким образом можно исключить или подтвердить аппаратную поломку. Скорее всего при замене видеокарты были повреждены компоненты материнской платы. Или руками коснулись к выводам микросхемы и статикой спалили её. Да, это мало вероятно, но очень вероятно( какая-то тавтология получилась).
    Если у вас роутер, посмотрите - загораются ли индикатор Lan при подключении. Также теоретически, должны быть светодиоды возле Lan гнезда на материнке. Посмотрите, светятся ли они при перезагрузке.
    Ответ написан
    8 комментариев
  • Не видит провод интернета после смены видеокарты?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Есть подозрение, что вы в процессе установки новой карты покорябали дорожки на материнке. Посмотрите пристально - возможно, найдёте повреждения.
    Ответ написан
    1 комментарий
  • Не видит провод интернета после смены видеокарты?

    Francyz
    @Francyz
    Photographer & SysAdmin
    Вопрос из серии: "Если я тебе монтировкой по голове ударю, на какой ноге шнурки развяжутся?

    P.S. Проверяйте драйвера на сетевую, целостность кабеля, биос и т.д.
    Ответ написан
    Комментировать
  • Как изменить значение свойства в итерируемом объекте?

    0xD34F
    @0xD34F
    updateCount(item, change) {
      item.count += change;
    }

    <button (click)="updateCount(item,  1)">+</button>
    <button (click)="updateCount(item, -1)">-</button>
    Ответ написан
    Комментировать