Vladimir
httptrace появился
Nail
Подскажите opensource проект, где можно было бы подсмотреть, как реализуются абстрактные списки, то есть списки данных разных типов
Илья
[]interface{}?
Nail
[]interface{}?
а что-нибудь более "идеоматическое"?
Daniel
идеоматическое - не делать списки данных разных типов
Daniel
(я без троллинга)
Nail
уточню, один список может содержать только один тип
Nail
но списков может быть много
Anonymous
уточню, один список может содержать только один тип
Генераторами нагенерировать, а вообще я такое делал руками
Nail
по идее можно сделать общий интерфейс для элементов списка, но пока трудно понять как организовывать общий код для разных типов элементов
Kirill
Подскажите opensource проект, где можно было бы подсмотреть, как реализуются абстрактные списки, то есть списки данных разных типов
не "идеоматическое" — []interface{} или []unsafe.Pointer. но ты бы не спрашивал этот вопрос, если бы тебе подходил последний вариант.
Kirill
уточню, один список может содержать только один тип
тогда да, генерировать или какой-нибудь map[string][]interface{}, где ключ — fmt.Sprintf("%T", someVar). расширяться будет проще, но работать будет относительно медленно.
Kirill
ок, то есть тоже на основе Interface
конечно. есть очень мало вариантов запихнуть в переменную любой тип. самый безопасный — interface{}.
Anonymous
скорее 10
Если в пределах 10, мб тогда 10 штук [][]твои_типы?
Anonymous
В sort объявлен накой интерфейс type Interface interface { Len() int Less(i, j int) bool Swap(i, j int) }
Kirill
но — по сути, interface{} — это struct { typ *runtime._type; data unsafe.Pointer }, и из interface{} данные можно получать сильно более дешевым способом через какой-нибудь стрёмно выглядящий var i interface{} = map[string]string{} m := *((*map[string]string)(([2]unsafe.Pointer(unsafe.Pointer(&i))[1])) но — такое если уж и делать, то в самый нагруженных частях кода, в которые ты упёрся только из-за eface.
Nail
В sort объявлен накой интерфейс type Interface interface { Len() int Less(i, j int) bool Swap(i, j int) }
а если имеем штук 20 типов, у них функции Len и Swap одинаковые, то их код копи-пастить во все эти типы?
Anonymous
Нет дженериков же
Anonymous
Только костыли с кодогенерацией или interface{}
Anonymous
Такое делают в C, в C++ по рукам тоже бьют
Kirill
спасибо, запомню, но для меня такое выглядит как не go, а скорее c++
ну — тогда https://github.com/gramework/runtimer. GetEfaceDataPtr или EfaceDataPtr.
engelbart
А почему у нас нет макросов как в лиспе ?
Kirill
А почему у нас нет макросов как в лиспе ?
может, потому что у нас не лисп? и не ржавчинка?
engelbart
Ну макросы же круть
Kirill
ну — тогда https://github.com/gramework/runtimer. GetEfaceDataPtr или EfaceDataPtr.
пакет, если что, даёт возможность творить всякого рода вакханалию. сделан по принципу "не знаешь — не трогай".
Андрей
Ну макросы же круть
Впору вводить дайджест вопросов: 1. А почему у нас нет дженериков? ( 1 000 000 раз) 2. А почему у нас нет макросов? (500 000 раз) ... 😉
engelbart
Да ?
engelbart
Сорри
Андрей
Да
engelbart
Про дженерики самому обрыдло
engelbart
А про макросы не слышал
Kirill
не помню, говорил или нет — недавно поклонник ириски и его автора в комментах в бенчмарке фреймворков обвинил меня в том, что я забанил катараса только потому, что я пилю (цитата) так называемый, веб-фреймворк, который я реально для паблика стал пилить только в этом году, а тогда даже не предполагал, что его буду публиковать.
engelbart
Ну не кидайте помидорами, но есть короткий ответ или ссылка про макросы ?
engelbart
Ответ поди "для простоты" ?
Kirill
еще и в том, что это я ириску удалил из бенчмарков, хотя я в этом процессе даже не участвовал %)
Kirill
алсо, кусочек бенчмарков
Kirill
Не любишь ты катараса. Ох не любишь...
я терпеть не могу людей, которые нагло тырят чужой код. просто катарас — тот, кто при этом шумел больше.
Alexei
fasthttp хорош, у нас повсеместно
Kirill
fasthttp хорош, у нас повсеместно
ну вот я и пилю такой фреймворк, чтобы было удобно и при этом производительность и эффективность или не терялись, или где-то были выше.
Kirill
http://stackoverflow.com/questions/13876068/c-style-macros-in-go
человек просил без помидоров, а ты ему сразу трехлитровую банку в лицо...)
Илья
лень было писать :(
Илья
если вопрос был, почему их нет, я не помню такого срачика в golang-nuts, так что шут его знает
Kirill
engelbart
Дослушал подкамт, жесть какой длинный !
engelbart
Надо танцы чирлидеров в паузах !
Андрей
Тогда это будет видеокаст
Slava
можно с ускорением слушать =)
Андрей
И тогда будет истинный покаст гоферов 😂 Я голоса имею в виду.
Николай
Подскажите пожалуйста, есть дамп postgres базы в sql файле, в одном файле вроде как две базы, какой командой мне их заресторить?
Daniel
psql
Daniel
это же просто sql-выражения
RunOver
Дня хорошего вам. Тут наметился Хакатон. К вам ссылку кидать можно?
Daniel
ну - давайте глянем на вашу ссылку
RunOver
http://iqhack2017.com/
Anonymous
Нее, в спб опасно.
Мерль
secure coding practices guide for #golang https://github.com/Checkmarx/Go-SCP
Konstantin
Переписывал скрипт один для работы с инстой с java на go, вдруг кому пригодится: https://github.com/SolidlSnake/instagram-go-scraper Первый опыт работы с go, критика приветствуется)
Vladimir
И я наверное что-то не дочитал, но как-то очень много map[string]interface{}
Vladimir
Почему не превратить в структуры?
Vladimir
я просто б посоветовал прогнать golint и исправить примерно все.
Vladimir
civil@felixng ~/go/src/github.com/SolidlSnake/instagram-go-scraper/instagram $ gometalinter —deadline=600s —disable=gotype | grep -c golint 85