Anonymous
Завтра проверю, сегодня уже голова не соображает
Pawel
Здравствуйте, ребята! Давно мучает вопрос, а что в Go используют вместо дженериков?
Там, где в других языках используют дженерики, в гошечке в 90% случаев используют интерфейсы или просто обходятся без джененриков, в 10% - копипаста, рефлексия и кодогенерация, именно в таком порядке приоритетов. Смысл в том, что generic’и с template’ами в других языках программирования используют не по назначению в большинстве случаев, что приводит к необоснованному усложнению кода, замедлению скорости компиляции, разрастанию скомпилированных бинарников. И только в паре процентов случаев использование generic’ов дает реальный выигрыш в качестве кода. В 99% случаев это стандартный набор контейнеров и алгоритмов для произвольных типов данных. Разработчики go готовы добавить generic’и, если удастся реализовать их в таком виде, чтобы максимально затруднить их неверное использование, в то же время максимально упростить их корректное использование. Проблема в том, что такие дженерики пока никто не придумал. См. golang.org/doc/faq#generics
Vasily
ну и ещё есть консорльный iconv если выяснится всё же, чт отебе надо конвертить ВСЁ тем более что до выдова консрольных скриптов тут дело уже дошло
Anonymous
Там, где в других языках используют дженерики, в гошечке в 90% случаев используют интерфейсы или просто обходятся без джененриков, в 10% - копипаста, рефлексия и кодогенерация, именно в таком порядке приоритетов. Смысл в том, что generic’и с template’ами в других языках программирования используют не по назначению в большинстве случаев, что приводит к необоснованному усложнению кода, замедлению скорости компиляции, разрастанию скомпилированных бинарников. И только в паре процентов случаев использование generic’ов дает реальный выигрыш в качестве кода. В 99% случаев это стандартный набор контейнеров и алгоритмов для произвольных типов данных. Разработчики go готовы добавить generic’и, если удастся реализовать их в таком виде, чтобы максимально затруднить их неверное использование, в то же время максимально упростить их корректное использование. Проблема в том, что такие дженерики пока никто не придумал. См. golang.org/doc/faq#generics
Сильное заявление)
Pawel
Здравствуйте, ребята! Давно мучает вопрос, а что в Go используют вместо дженериков?
А по поводу обощённых контейнеров - в основном каждый день используют array и hashmap. Эти два контейнера встроены в Go и позволяют работать с произвольными типами. Остальные контейнеры используются настолько редко, что не составляет никакого труда написать их кастомную реализацию под требуемый тип данных.
Pawel
Сильное заявление)
ни разу не сталкивался с стуацией, где без дженериков никуда. Вот метапрограммирования реально не хватает
Мерль
👉 Selecting an Event Architecture #AsyncAPI #APIs #microservices #Programming #Tech #java #golang #php #nodejs #code https://www.infoq.com/news/2017/08/selecting-event-architecture?utm_source=infoqWeeklyNewsletter&utm_medium=WeeklyNL_EditorialContent_architecture-design&utm_campaign=08292017news&utm_content=top
Anonymous
charmap.Windows1251.NewDecoder() в charmap.Windows1251 теперь нет функции NewDecoder?
Anonymous
⏺ Vаdim
type Response2 struct { Page int `zzz:"page"` Fruits []string `xxx:"fruits"` } Парни, можно както обращаться в структуре к свойствам zzz xxx в примере?
Peter
через рефлексию
⏺ Vаdim
👍🏻👍🏻👍🏻 спасибо
Pawel
Сталкивался. В append/make.
ну они в гошечке есть значит всё хорошо
Ivan
Всем привет, нужен разраб на го. Back stack: Go lang, SOA архитектура, используется beego + gorm + протокол GRPC, обернуто в docker. БД MySQL Задача - Вытащить данные которые уже есть в админку с минимальным фронтом, сделать возможность корректировать некторые из них. Бюджет 40к рублей срок - 10 дней. Подробности в личку Вообще работа на постоянку
Anonymous
Нечего не пойму return charmap.Windows1251.NewDecoder().Reader(input), nil NewDecoder() подсвечена красным цветом go build собирает и не ругается, но encoding не работает в чем может быть проблема?
Alex
Доброе утро, подскажите как получить последний id. https://play.golang.org/p/LPX_fA39Cu
Konstantin
только лучше так) id, _ := result.LastInsertId()
Konstantin
метод и ошибку возращает, но у тебя это учтено)
Ngoro
не всегда LastInsertId работает. Зависит от драйвера БД. Не знаю как сейчас, но вот например, в postgresql это не работало. Там это обходили переписываем запроса с использование returning: var id int err := db.QueryRow("INSERT INTO user (name) VALUES ('John') RETURNING id").Scan(&id) if err != nil { ... }
Konstantin
угу, но это синтаксис postgres
Ngoro
я к тому, что нужно заглянуть в доку к драйверу, проверить работает ли LastInsertId
Alex
Есть вариант, передавать id с фронтэнда, но пока хотелось бы через го сделать
Ilya
Целочисленные ид - зло
Quet
Целочисленные ид - зло
секта свидетелей uuid? )
Constantine️
Ngoro
uuid тоже зло 😇
🅁
зачем uuid, юзай монгоИд
Ilya
В жопу монгу
🅁
В жопу монгу
ничкто не призывает её использовать, возьми оттуда лучшее - MongoId
🅁
короче чем uuid
🅁
а пользы больше
🅁
Зачем если есть ууид который более гибок
возможно я не в курсе, а какую инфу он в себе несет?
Ilya
возможно я не в курсе, а какую инфу он в себе несет?
Ну например пихать в него макадрес ноды на которой он был сгенерен.
🅁
видимо и timestamp можно
Ilya
Меньше боли если сливаешь 2 бд в одну
Ilya
И тд
Anton
видимо и timestamp можно
у cassandra есть. TimeUUID :)
🅁
Меньше боли если сливаешь 2 бд в одну
1. Не думаю что будут коллизии 2. Для наших задач требуется уникальный хеш запроса + было бы неплохо привязать к нему timestamp
🅁
MongoId для этого подходит
🅁
Надо будет почитать про uuid по-полробнее
Vladimir
спасибо, зашел зарепортил как спам
Vladimir
и тебя бы зарепортил, но не модератор
Vladimir
впрочем с бездушной жестянкой разговаривать смысла нет
Мерль
[last news] Chiefr: Distributed project development model and toolkit written in Go
Anonymous
всем доброго дня! кто подскажет по 12ф приложениям на сабже? -https://12factor.net/concurrency как на Go выглядит реализация последнего абзаца в паре с systemd в общих чертах?
Anonymous
конкретно смущает прям первое предложение. как это should not daemonize or write pid files?
Daniel
ну - так и есть
Daniel
по техническим причинам go программа не может демонизироваться качественно
Daniel
применяйте супервизоры
Vladimir
@onokonem вот кстати про пидфайлы при этом не согласен )
Konstantin
systemd / supervisord
Anonymous
по техническим причинам go программа не может демонизироваться качественно
другими словами она не может быть гипервизором сама для себя? и какие средства в ходу нынче?
Vladimir
а разверни?
а что разворачивать? Может писать пид файлы, почему нет?
Vladimir
может, но зачем?
например если ты делаешь graceful restart с передачей сокетов
Vladimir
средствами софта
Vladimir
верный способ отследить кто теперь мастер - pid
Daniel
не надо это делать
Anonymous
systemd. где нету - я использую runit
спасибо, похоже я сделад правильный выбор на этот раз)
Anonymous
а если писать pid для перезапуска это ок? или я чтото делаю не так? как без pid в systemd перезапускать/останавливать сервис?
Vladimir
не надо это делать
почему не надо?
Kirill
https://habrahabr.ru/post/337098/
nikita
не знал, что node.js дело рук Лебедева
Ilya
не. у лебедева parser
Taras 🦀
https://habrahabr.ru/post/337098/
отлично, Go умеет в числодробилку но изобретать erlang на js - лол)
Anonymous
Anonymous
Karey
Для бэка - в целом давно
Vital
теперь её юзают только для изоморфщинц/универсальщины?