hakaton7 | Unsorted

Telegram-канал hakaton7 - Хакатон-клуб

2463

Сообщество golang-разработчиков 💙 @it_chat7

Subscribe to a channel

Хакатон-клуб

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

Читать полностью…

Хакатон-клуб

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

у меня три сервиса:
1. Keitaro достаёт данные из одноимённого сервиса
2. Meta шлёт события в Conversion API
3. Affise - в сторону Affise

хочется дать два отдельных роута для отправки событий в разные места:
UPD: т.е. запрос в Keitaro всегда одинаковый
- в случае мидлваря, я смогу в нём по содержанию тела запроса понимать, куда мы отправляем запрос и оставить внешний один путь;
- в случае простого способа - я просто дам два отдельных пути под разные запросы;

как-то так я себе это сейчас представляю. это корректно?

Читать полностью…

Хакатон-клуб

ну я в целом правильно понимаю, что этот подход имеет смысл использовать именно для мидлварь, а предыдущий уместнее для задачи роутинга в нужные контроллеры?

Читать полностью…

Хакатон-клуб

Это классический подход с миделваре, аля шаблон проектирования, ты можешь накрутить несколько таких миделварь, для каждой задачи, к примеру
* для проброса контейнера
* для авторизации
* для логирования запроса
* для перехвата паник
итп

Ну и можно это немного аккуратнее сделать, сейчас покажу какк

Читать полностью…

Хакатон-клуб

либо еще вариант вот так:

package main

import (
"fmt"
"net/http"
)

type someService struct {
}

type handler struct {
s *someService
}

func (h *handler) handler(w http.ResponseWriter, r *http.Request) {
fmt.Println(w, h.s, r)
}

func main() {
mux := http.NewServeMux()

h := &handler{
s: &someService{},
}

mux.HandleFunc("/someHandler", h.handler)
}

Читать полностью…

Хакатон-клуб

не обязательно. Один из вариантов, можно сделать так:

package main

import (
"fmt"
"net/http"
)

type someServiceContainer struct {
}

func main() {
mux := http.NewServeMux()

c := &someServiceContainer{}

mux.HandleFunc("/someHandler", func(w http.ResponseWriter, r *http.Request) {
handler(w, c, r)
})
}

func handler(w http.ResponseWriter, c *someServiceContainer, r *http.Request) {
fmt.Println(w, c, r)
}

Читать полностью…

Хакатон-клуб

#go #golang #middle #україна
We are looking for Middle+/Senior Golang Developer for outstaff project.

Requirements:
• Expertise in Go 3,5+ years
• Experience with cloud-based deployment
• Experience with blockchain

Part-time, long-term.

Interview process:
1. test-task
2. technical call

Details: @paul_fost

Читать полностью…

Хакатон-клуб

https://habr.com/ru/articles/457728/

Читать полностью…

Хакатон-клуб

я сделал на 1 скриншоте имена с заглавной чтобы их можно использовать вне файла и в main их использую

Читать полностью…

Хакатон-клуб

то есть в свой проект ты импортируешь модули через go.mod а в пакетах своего проекта импортируешь другие пакеты через import

Читать полностью…

Хакатон-клуб

А вот пакет это уже по сути просто папка которая объединяет гошные фалы и является как бы черным ящиком для внешних пакетов

Читать полностью…

Хакатон-клуб

они типа соединяют файлы

Читать полностью…

Хакатон-клуб

угу, как то так, ну и назвать лучше как то по другому =) но так оно же хотя бы работает. То есть при импорте у тебя в начале идет название модуля (либо твоего что бы внутренние пакеты использовать, либо внешнего который у тебя будет прописан в go.mod) а дальше названия пакетов которые должны соответствовать названиям папок в которых они лежат

Читать полностью…

Хакатон-клуб

правильно ли я делаю?

Читать полностью…

Хакатон-клуб

Поцоны. Есть вопросик: есть у кого опыт перехода между разными яп и платформами? Аля мидл .net -> мидл go. как там по сохранению зп и прочего?

Читать полностью…

Хакатон-клуб

Это просто прокся получается?

Читать полностью…

Хакатон-клуб

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

Читать полностью…

Хакатон-клуб

Вот к примеру

package main

import (
"fmt"
"net/http"
)

type someServiceContainer struct {
}

func main() {
mux := http.NewServeMux()

c := &someServiceContainer{}

mux.HandleFunc("/someHandler", middleware(handler, c))
}

func middleware(f func(http.ResponseWriter, *someServiceContainer, *http.Request), c *someServiceContainer) func(http.ResponseWriter, *http.Request) {
return func(w http.ResponseWriter, r *http.Request) {
f(w, c, r)
}
}

func handler(w http.ResponseWriter, c *someServiceContainer, r *http.Request) {
fmt.Println(w, c, r)
}

Читать полностью…

Хакатон-клуб

это вот выглядит значительно красивее, спасибо

Читать полностью…

Хакатон-клуб

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

Читать полностью…

Хакатон-клуб

Ребятки, нужна помощь. Всегда пользовался Gin, сейчас пытаюсь сделать простой вебсервер встроенными средствами и впал в ступор.

Я в main создаю структуры сервисов
Создаю сервер в духе:

  mux := http.NewServeMux()
mux.HandleFunc("/capi", CapiConverstion)

log.Fatal(http.ListenAndServe(":8080", mux))

но мой CapiConversion ничего не знает про созданные выше сервисы и как ими пользоваться.
неужели их нужно через контекст как-то подключать?

Читать полностью…

Хакатон-клуб

#вакансия #vacancy #fulltime #middle #senior

Привет, это команда Тинькофф. Мы ищем Golang-разработчика уровня Middle и Senior 💡

Формат работы:
в офисе или удаленно — по договоренности/РФ
ЗП: оклад от 150.000 до 400. 000 ₽ (выше тоже возможен, зависит от результата пройденных секций)

Вы будете:
· Заниматься разработкой инфраструктурного сервиса для сбора распределенных трейсов
· Разрабатывать подходы к обеспечению надежности системы сбора трейсов, определение SLO/SLI
· Участвовать во внедрении распределенного трейсинга, в том числе в создании каталога согласованных библиотек инструментализации под техрадар Tinkoff

Мы ждем:
· Опыт промышленной разработки на Go не меньше 3 лет (будет плюсом опыт на Java/Kotlin/C++
· Понимание принципов архитектуры многокомпонентных систем и умение применять эти знания на практике (балансировка нагрузки, обеспечение отказоустойчивости)
· Знание экосистемы CloudNative: K8s, Prometheus, Jaeger
· Опыт работы с Cassandra, Elasticsearch, ClickHouse, Kafka, в том числе умение посайзить инфраструктуру

Мы предлагаем:
· Работу в офисе или удаленно — по договоренности
· Платформу обучения и развития «Тинькофф Апгрейд». Курсы, тренинги, вебинары и базы знаний. Поддержка менторов и наставников, помощь в поиске точек роста и карьерном развитии
· Заботу о здоровье. Оформим полис ДМС со стоматологией и страховку от несчастных случаев. Предложим льготное страхование вашим близким
· Линейку льготных тарифов на продукты Тинькофф
· Частичную компенсацию затрат на спорт
· Сервисы для поддержки сотрудника по психологическим, юридическим и финансовым вопросам
· Три дополнительных дня отпуска в год
· Достойную зарплату — обсудим ее на собеседовании


Присылайте резюме и вопросы мне в Телеграм @takamaka2023 или на почту e.s.krasnova@tinkoff.ru

Читать полностью…

Хакатон-клуб

Я бы посмотрел в сторону https://pkg.go.dev/embed, и router.StaticFS

https://gin-gonic.com/docs/examples/serving-static-files/

Читать полностью…

Хакатон-клуб

то есть я могу несколько файлов через один модуль импортировать

Читать полностью…

Хакатон-клуб

Импортируемая единица, в данном контексте имеется в виду то что ты импортируешь в go.mod а в проекте ты уже импортируешь пакеты

Читать полностью…

Хакатон-клуб

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

Читать полностью…

Хакатон-клуб

Кстати вот тебе в помощь, https://github.com/golang-standards/project-layout/blob/master/README_ru.md должно быть полезно

Читать полностью…

Хакатон-клуб

нет, если ты создаешь модуль students а в нем пакет students то импорт у тебя должен быть "students/students"

Читать полностью…

Хакатон-клуб

Написано что нужно вводить команду go mod init lesson

Читать полностью…

Хакатон-клуб

нужен хелп, как с сервака на gin правильно сделать SPA приложение вместе с реактом?
раздать статику и все запросы на index.html

Читать полностью…
Subscribe to a channel