• Как корректно ограничить вызов RPC по таймауту?

    unreachable code можно смело убрать
    У вас же и так возвращается ошибка в случае отмены контекста:
    case <-ctx.Done():
          return nil, ctx.Err()

    Но нужно понимать, что контекст будет по таймауту отменяться только если этот таймаут контексту задан.
    Например:
    ctx, cancel := context.WithTimeout(context.Background(), time.Second)
    defer cancel()
    resp, err := srv.RPCClient.Call(ctx, topic, payload)
    if err != nil { // тут вернет ошибку "context cancelled" при таймауте
      srv.logger.Error("RPC call error. ", err)
      return err
    }
    Ответ написан
    4 комментария
  • Как правильно работать с Context?

    Во-первых, лучше контекст все же брать не Background, а из http-запроса. Таким образом вы будете корректно обрабатывать ситуацию, когда соединение с клиентом разорвалось и не надо больше обрабатывать запрос (контекст отменится).
    ctx, cancel := context.WithTimeout(r.Context(), config.Read().HTTP.Timeout.Request*time.Second)


    Во-вторых, контекст обычно не используют для ожидания внутренних горутин, он не для этого предназначен. Для этого используют sync.WaitGroup.
    Поэтому у вас и возникает проблема, ибо событие отмены контекста еще не значит, что дочерние функции мгновенно завершились. Возникает ситуация, когда чтение канала <-ctx.Done() внутри приведенной вами функции происходит раньше, чем такое же чтение канала внутри функции router.middlewareHandler(h). Поэтому нужно ждать не отмены контекста, а завершения работы горутины.

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

    В-четвертых, вы, наверное, хотели написать if ctx.Err() != nil {. Но у вас вместо этого ==, что вообще обесценивает код внутри этого ифа.
    Ответ написан
    Комментировать
  • Аналог proxy_pass nginx на языке golang возможно ли реализовать?

    чтобы без буфера было, нужно вот этот кусок
    body, err := ioutil.ReadAll(resp.Body)
        if err != nil {
            http.Error(w, "error reading response body", http.StatusInternalServerError)
            return
        }
    
        // write status code and body from proxy request into the answer
        w.WriteHeader(resp.StatusCode)
        w.Write(body)


    заменить на этот:

    w.WriteHeader(resp.StatusCode)
    _, err := io.Copy(w, body)
    if err != nil {
        http.Error(w, "error reading response body", http.StatusInternalServerError)
        return
    }
    Ответ написан
    Комментировать
  • Как быстро поднять инфраструктуру предприятия?

    @q2digger
    никого не трогаю, починяю примус
    Это разовая акция? Есть смысл строить автоматизацию?
    terraform, ansible , многое зависит от гипервизора. чтото легче автоматизируется ,чтото хуже.
    Ответ написан
    4 комментария
  • Почему в Linux Mint иные шрифты?

    gedev
    @gedev
    сисадмин-энтузиаст
    1. Потому, что стандартные наборы шрифтов отличаются. Это неизбежно из-за лицензий.
    2. Разумеется можно установить дополнительные шрифты. Надо лишь найти те, что нужны вам. Смена дистрибутива это как-то очень радикально, всё равно будете доустанавливать шрифты :)

    Также есть разница в рендеринге. Один и тот же шрифт в Linux и Windows может выглядеть слегка по-разному и вы на это вряд ли повлияете.
    Ответ написан
    7 комментариев
  • Из-за чего ошибка nodejs client password must be a string?

    ayazer
    @ayazer
    Sr. Software Engineer
    const pool = new Pool({
      user:'postgres',
      password:'password',
      host:'localhost',
      port:5432,
      database:'delviery'
    });


    pasword => password
    Ответ написан
    Комментировать
  • Из-за чего ошибка nodejs client password must be a string?

    @galaxy
    pasword:'password',

    точно ничего не замечаете?
    Ответ написан
    Комментировать
  • Какое направление выбрать, если не хочешь до конца жизни пилить формочки и гонять json?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Чтобы не гонять json, надо попасть в R&D крупных компаний. Но надо понимать, что R&D - это всегда относительно мелкие подразделения, в которые попадают только те, кто к моменту поступления в универ уже был крутым программистом.
    Ответ написан
    2 комментария
  • Какое направление выбрать, если не хочешь до конца жизни пилить формочки и гонять json?

    Adamos
    @Adamos
    Предпочитаете до конца жизни пилить государственную статистику так, чтобы она показывала нужные цифры?
    Чтобы не заниматься скучной работой, нужно искать интересную и самому быть интересным работодателю. Вузовские курсы могут кое-чем помочь на этом пути, но выбор конкретного курса совершенно ничего не решает. Уж поверьте инженеру-строителю, четверть века назад положившему диплом на полочку.
    Ответ написан
    7 комментариев
  • Как подключиться к VPC от AWS amazon?

    r0zh0k
    @r0zh0k
    Site Reliability Engineer
    1. VPC как правило содержит публичные и приватные подсети. Посмотрите какие есть в вашей и где находятся инстансы к которым вы хотите подключиться.
    2. Если публичных подсетей нет, то вам нужно добавить таковую
    3. Для подключения к инстансам вам нужен ключ. Если ключа у вас нет и других способов подключения вы не настраивали (например, самостоятельно конфигурировали sshd на инстансе) – то к инстансу вы подключиться не сможете, даже если сможете его пингануть
    4. Если ваш инстанс находится в приватной подсети, вам нужно создать новый инстанс (пойдет самый простой t2.nano) в публичной подсети и настроить security groups для целевого инстанса чтобы был открыт доступ к нужым портам из публичной подсети
    5. Логинитесь на ваш свежесозданный инстанс и уже с него – на целевой.
    6. Если ваш целевой инстанс находится в публичной подсети – тогда у него есть публичный ІР адрес, к которому вы можете подключиться (нужно только настроить security group чтобы открыть порты для внешнего доступа)
    Ответ написан
    Комментировать
  • VPC Amazon Cloud, с чего начать или какие есть альтернативы? Как рассчитать стоимость?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    lightsail, как можно догадаться по названию, это упрощенный(легкий) интерфейс над вычислительными - Elastic Compute Cloud (EC2) сервисами. И немного более дешевый в связи с тем, что контроля вам дают мало. Однако он сразу реализует некоторые паттерны и наборы сервисов для быстрого старта. Это - путь стартапов.
    Lightsail, насколько я помню, запускается в "VPC по умолчанию" которым управляет AWS и где все сервера живут в публичной подсети, что небезопасно.

    Та схема которую вы хотите, наверное, реализуется lightsail-ом, но для большего контроля все таки рекомендуется организовать свой VPC (Virtual Private Cloud) - компонент сетевых сервисов AWS.
    В вашем случае потребуется что-то вроде(для оценки стоимости) :

    1. Балансировщик :
    - ALB\ELB сервис (отдельный прайсинг). HA сервиса обеспечивает AWS
    или
    - два инстанса нужного вам балансировщика (Nginx, HAProxy и другие). HA и прочая обеспечиваете вы.

    2. N бэкендов нужного типа (смотрите стоимость конкретного инстанса соответствующего вашим потребностям)

    3. реплицируемые базы :
    - вы можете взять 2 инстанса нужной мощности(платите за инстансы) и настроить все сами
    или
    - взять RDS (отдельный сервис, другой прайсинг) нужной базы где HA и обслуживанием будет заниматься AWS для вас, предоставляя вам эндпойнт для подключения с серверов.

    4. Файловое хранилище. Тут интереснее
    Если у вас Windows : вам понадобятся два инстанса для обеспечения отказоустойчивости и HA
    Если у вас *nix : вы можете сделать так же как с WIndows или взять EFS (отдельный сервис, где вы платите за занятое место) который высокодоступен и может быть подключен к разным *nix инстансам одновременно.

    5. Внутренности VPC
    VPC организуется так же как и любая сеть в железном эквиваленте.
    Подсети - приватные, публичные
    Настройка роутинга для публичных подсетей, для приватных подсетей через NAT инстанс\сервис
    NAT инстанс или сервис
    VPN инстанс или бастион (для доступа к инстансам в приватной подсети)

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

    Это мое личное мнение по тому, как следовало бы сделать в вашем случае.
    Может статься, что вы не осилите (у каждого своя скорость освоения) это достаточно быстро и быстрее реализуете другую схему - это на ваш выбор
    Ответ написан
    Комментировать
  • Как сделать скелет сайта до загрузки?

    @EvgeniiR
    https://github.com/EvgeniiR
    Загрузить js + минимальный шаблон (со скрина)
    -> отправить AJAX-запросы за данными
    -> отрендерить блоки с данными

    p.s. Если что, в Хроме есть удобнейший профайлер, через который можно просмотреть каждый кадр в загрузке страницы, какие скрипты выполнялись и какие ресурсы загружались в какое время
    screen
    5d0754871bcbb487098172.png
    Ответ написан
    Комментировать
  • Стоит ли работать специалистом техподдержки в банке?

    petermzg
    @petermzg
    Самый лучший программист
    Для того чтобы развиваться в ИТ нужно всего лишь желание.
    Никто не мешает вечером после работы или утром до работы делать свои проекты и учиться новому.

    Если душа не лежит, то зачем идти туда, где будешь, по вашему мнению, мальчиком на побегушках?
    Ответ написан
    Комментировать
  • Стоит ли работать специалистом техподдержки в банке?

    hint000
    @hint000
    у админа три руки
    Рекомендую поработать там один год. Кое-какой полезный опыт это даст (в том числе soft skills поднимите), но долго засиживаться не стоит. Некоторые начинают уважительно относиться, увидев в резюме, что вы работали в банке. Не знаю почему (объективных причин вроде нет), но такие стереотипы имеют место. Так что поработайте. Возможно, вас выжмут, как лимон, но за один год не успеете сдохнуть, зато соберёте небольшую финансовую подушку для поиска другой работы.
    Ответ написан
    1 комментарий
  • Какой линукс лучше поставить для фронтенд разработки на слабый ноутбук?

    @rPman
    Драйвера на видео обнови/смени (кстати проверь без них, со штатным или вообще vesa для чистоты эксперимента) потому что это:
    Через некоторое время хром стал падать каждые полчаса. Ну, думаю, наверно хром для линукса нестабильный, поставил хромиум - таже история. Вивальди поставил - тоже падает.
    выглядит как железная проблема

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

    dmitriylanets
    @dmitriylanets
    веб-разработчик
    если заявка на новую конфигурацию создается на основе существующих то так:
    Пользователь - Конфигурация
    Пользователь - Заявка - Конфигурация

    если заявка на новую конфигурацию строится кастомно, то
    Пользователь - Конфигурация
    Пользователь - Заявка(Конфигурация в поле например в json)
    Ответ написан
    1 комментарий
  • Таблица с JSON полем или несколько таблиц под каждый тип данных, какой вариант проектрирования выбрать?

    JhaoDa
    @JhaoDa
    LaravelRUS Team
    В JSON может поместиться всё, что вы захотите в него поместить, mysql не волнует, сколько там «полей».

    Размер JSON-поля определяется переменной max_allowed_packet.

    Ну и лучше юзать PostgreSQL, там с JSON'ом всё лучше (в JSONB-варианте) — например, нормальные индексы.
    Ответ написан
  • Стоит ли учить php в 2021 году для разработки web приложений и сайтов?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Для Web-приложений не очень. Для сайтов очень даже.

    Почему для Web-приложений не очень: чаще всего они требуют сложных пользовательских интерфейсов. А это JavaScript, скорее даже TypeScript. Если у вас в команде Fullstack разработчики, то добавление каждого нового языка программирования усложняет разработку. В целом Typescript ничем не уступает PHP. ООП и т.д., строгая типизация, это все имеется. Да, в некоторых случаях он медленнее и разработка на нем несколько сложнее. Но это уже зависит от кривизны ваших рук.

    В общем и целом зависит от того, чем вы хотите заниматься в дальнейшем. Хотите пилить Битрикс и клепать веб-магазинчики - тогда PHP.
    Хотите заниматься разрботкой веб-приложений, тогда Typescript/Javascript. Опять же React Native никто не отменял. В любом случае вам прийдется учить Javascript, т.к. фронт весь сделан на нем. Так почему бы не начать с него?

    Как начинающему, я бы советовал вам учить языки примерно в такой последовательности Javascript, Typescript, PHP, Python, Rust или Go.
    Ответ написан
  • Стоит ли учить php в 2021 году для разработки web приложений и сайтов?

    @thisuserhatephp
    Офлайн - losers Онлайн - lusers
    Никогда не понимал причем тут год и яп. Прыщавые иксперты с дырявыми мозгами и мне в свое время давали такие советы и наставления, мол не учи то, не учи се, сейчас такой-то год....
    Когда же вы поймете, что стек нужно выбирать не смотря на календарь, а исходя из тз которое решает данный стек. Если твою задачу лучше всего решает паскаль, то плевать какой сейчас год, хоть 5021-ый, нужно выбирать паскаль, а не что-то другое, потому что васян в коммах на форуме написал "паскаль в 2021 ? пхпхпха"

    Актуально ли php в 2021 году и стоит ли учить его?

    Если тебе позволяет время, то учить нужно все, что связанно с твоим стеком, а так кончено же актуально
    Ответ написан