@gogolang

Страница 1482 из 1630
Nick
30.09.2018
08:28:57
Пошел гуглить)
А, там нет наследования. Композицию над будет юзать

Wingman
30.09.2018
08:29:39
Но я не уверен что там так можно, можно на протобафе сделать говно структуру конечно
Пока что мне пришло в голову - делать "родительскую" структуру-обертку, объявлять в ней тип пакета, и поле с типом Any - в которое уже писать "основной" пакет 1) читать тип 2) после считывания типа - приводить Any к нужному типу

До компа доберусь - буду экспериментировать

Google
Nick
30.09.2018
08:31:19
Мерлин
30.09.2018
08:31:33


Никита
30.09.2018
08:42:42
Стандартный гошный пакет database/sql пытается повторить запрос при ошибке БД?

Wingman
30.09.2018
08:43:13
С чего бы

Никита
30.09.2018
08:43:42
А почему нет

Cluttering the code with error-handling and retry. Letdatabase/sql handle connection pooling, reconnecting, and retry logic for you https://www.vividcortex.com/blog/2015/09/22/common-pitfalls-go/

Wingman
30.09.2018
08:44:20
Какой смысл повторять запрос с синтаксической ошибкой например?

Никита
30.09.2018
08:44:39
Само собой твой запрос повторять нет смысла, но ведь можно понять, по какой причине отклонен

Wingman
30.09.2018
08:46:35
Можно конечно

Никита
30.09.2018
08:46:57
What if your connection to the database is dropped, killed, or has an error? You don’t need to implement any logic to retry failed statements when this happens. As part of the connection pooling in database/sql, handling failed connections is built-in. If you execute a query or other statement and the underlying connection has a failure, Go will reopen a new connection (or just get another from the connection pool) and retry, up to 10 times. http://go-database-sql.org/errors.html

Google
Wingman
30.09.2018
08:47:03
If err = db.xxx(); err != nil { .... :)

Никита
30.09.2018
08:47:04
Таки повторяет

Wingman
30.09.2018
08:47:25
При дисконекте да

Nick
30.09.2018
08:49:26
А если это была транзакция?

На дисконнекте она откатится и явно повторять уже будет не нужно)

Никита
30.09.2018
08:55:57
Я думаю с транзакцией также

сначала попытается повторить, потом вернет с ошибкой

Nick
30.09.2018
08:58:10
Транзакция к конекшену привязана

Нельзя будет что-то повторить

Subbotin
30.09.2018
09:13:36
Господь мой. На js

Не взлетит

Никита
30.09.2018
09:15:35
Вполне возможно что он повторяет целую транзакциию ?

Nick
30.09.2018
09:16:42
Точно нет

Alexander
30.09.2018
09:22:25
Господь мой. На js
а где там что-то о js сказано?

Subbotin
30.09.2018
09:23:12
https://github.com/solid

Alexander
30.09.2018
09:23:34
Нашёл уже..

Nick
30.09.2018
09:24:36
Сервер на ноде, они обречены)))

Bohdan
30.09.2018
09:26:04
у них какой-то неправильный solid

Никита
30.09.2018
09:26:33
Google
Maksim
30.09.2018
09:27:28
у них какой-то неправильный solid
Solid's basic protocol is REST сразу такая грусть разбирает :( чёртовы маркетологи)

Bohdan
30.09.2018
09:28:30
Solid's basic protocol is REST сразу такая грусть разбирает :( чёртовы маркетологи)
мне кажется, Тима Бернерса-Ли держат в заложниках

Senpos
30.09.2018
10:08:01
Привет! Подскажите, а есть чат для новичков? Или свои нубовские вопросы можно тут спрашивать?

Daniel
30.09.2018
10:11:50
Можно

Senpos
30.09.2018
10:12:12
Спрошу, а вы если что меня направите куда надо :) Уровень занний в Go: новичок Код: https://gist.github.com/Senpos/01b02d7b2f2cf8dcecd980bf3b4af86b Хочу заанмаршалить JSON-строку в структуру. В текущей имплементации - структурап получается почему-то пустая. Наверное, плохо построил структуры, но очевидного ничего в глаза не бросается. Подскажите, где косяк)

Мерлин
30.09.2018
10:23:23
Спрошу, а вы если что меня направите куда надо :) Уровень занний в Go: новичок Код: https://gist.github.com/Senpos/01b02d7b2f2cf8dcecd980bf3b4af86b Хочу заанмаршалить JSON-строку в структуру. В текущей имплементации - структурап получается почему-то пустая. Наверное, плохо построил структуры, но очевидного ничего в глаза не бросается. Подскажите, где косяк)
У тебя в JSON массив track — это поле объекта recenttracks, а ты сделал структуру, где tracks одного уровня с recenttracks то есть надо так type lastfmResponse { Recenttracks struct { Track []track `json:"track"` } `json:"recenttracks"` } Вот валидный код https://play.golang.org/p/jH_GJIHbChV Советую пользоваться генераторами типа https://mholt.github.io/json-to-go/

Roman
30.09.2018
12:08:11
О, шедевр — Влияет ли на управление сложностью то, что в программировании сейчас довольно много людей со слабой технической базой? Конечно. Для таких людей даже специальный язык программирования придумали. Называется Go. Я не шучу. Действительно, целью создания языка Go была попытка вовлечения в написание кода студентов и стажеров Google, которые не могут освоить C++. Python им не подходил по производительности, нужно было что-то иное, и в Google придумали Go. Как оказалось, очень много людей готовы на нем писать, потому что он очень простой. Но какой ценой достигнута эта простота? Нам дают не нормальный язык программирования, а его очень урезанную версию — в нем нет практически никаких сложных концептов by design. Нет дженериков, нет такого понятия, как исключения и т.д. И поклонников такого подхода много. Отсюда https://habr.com/company/oleg-bunin/blog/424393/
Такое впечатление будто „гуру C++“ не понимают, что одной их мизерной продуктивности не хватает для решения актуальных растущих потребностей к ПО, особенно рассматривая как сильно понижает продуктивность это вечное легаси которое C++ тянет за собой ещё со времён C))) говорю как бывший плюсер, нынешний гофер и будущий Rust’афарианец))

Roman
30.09.2018
12:10:44
Гофером-то останешься?)
я слишком много в него инвестировал чтобы уходить

но для systems programming Go, увы, не подходит, поэтому мне придётся некоторые будущие проблемы решать на Rust’е, поскольку в C++ возвращаться - себя не уважать)

вообще дизайн языка (Rust) весьма продвинутый, Option & Result одни чего стоят, гораздо безопаснее error интерфейса. Trait’ы очень мощный инструмент, правда то что я пишу на Go за 5 минут, на Rust’е занимает час, со временем продуктивность конечно повысится, но.. настолько же насколько и в Go? сложно поверить.

Roman
30.09.2018
12:15:27
а С что же совсем не нужен ?
забудьте про C как про страшный сон)

Subbotin
30.09.2018
12:17:18
забудьте про C как про страшный сон)
ну в какой-нибудь узкой области вполне может остаться

типа микроконтролеров

?
30.09.2018
12:18:59
мне кажется он проще С++ и Rust, конечно не безопасно, но

Roman
30.09.2018
12:20:13
ну в какой-нибудь узкой области вполне может остаться
https://github.com/xrei/prime-numbers-benchmark/tree/master/c на нём фаново писать только игрушки ИМХО, потому-что мало абстракций и такое ощущение при написании что ты прям по железу скребёшь. как только начинаешь на нём писать что-то серьёзно начинается лютый гемморой багов и километровые романы для решения тривиальных задач… C это как завершённая трилогия. Трилогия может быть феерической, но если её продолжать - она навсегда испортит все свои предыдущие достижения.

C дал миру всё что мог, ему давно пора на пенсию.

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

Google
Roman
30.09.2018
12:24:31
вообще самый простой язык по синтаксису это бинарный код. Там только однёрка и нолик, но легко ли на нём писать multi-threaded cross platform приложение?

Alexander
30.09.2018
12:25:10
мне кажется он проще С++ и Rust, конечно не безопасно, но
Таки да, а ассемблер проще C. Только вот это не значит, что программы писать проще на ассемблере, чем на C.

Roman
30.09.2018
12:28:30
в Go вот есть проблема что если не проверить ошибку и продолжить работать с возвратными данными, то можно жутко выстрелить себе в ногу, спасает только errcheck но и то не всегда. в Rust функция может вернуть Result<T, T>, где первый T это тип при удаче а второй  Т это тип возможной ошибки и Rust заставит тебя проверить что там вернулось и соответственно отреагировать

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

Admin
ERROR: S client not available

Диёр
30.09.2018
12:33:59
Так сказал будто в хаскеле either опаснее

Vadim
30.09.2018
12:34:25
Vadim
30.09.2018
12:35:39
„simplicity is hard to achieve“
Вроде го наиболее близок к этому.

Roman
30.09.2018
12:36:41
Вроде го наиболее близок к этому.
не совсем, он одновременно и близко но и очень далеко. надо судить не только написанию и чтению (в этих аспектах Go силён), но и сложность содержания (bugs, scalability etc.)

со scalability тоже всё относительно хорошо, есть бенчмаркинг, есть профайлинг, легко работать в команде и т.д.

но вот безопасность в Go сильно храмает, а это приводит к багам, а баги жрут много времени

Roman
30.09.2018
12:41:06
Senpos
30.09.2018
12:42:56
Слышал, что питонисты любят переходить на Го, мол, легко дается. А я не могу. Слишком мозг не в ту сторону уже :( Испортился человек, забраковался. Посоветуйте книжку, после Go by Example почитать :)

Roman
30.09.2018
12:44:15
Google
Никита
30.09.2018
12:44:18
Лучше смотреть видео с конференций

Foxcool
30.09.2018
12:44:23
Флеймграфы бы красивые, вот это все

Senpos
30.09.2018
12:45:28
??Благодарю

Roman
30.09.2018
12:45:44
А чем, кстати профилировать?
http://lmgtfy.com/?q=golang+profiling

Savely
30.09.2018
12:46:14
https://github.com/enocom/gopher-reading-list/blob/master/README.md
вот тут на русском много https://t.me/golanglibrary

Никита
30.09.2018
12:49:29
А есть что то типа go trace только в реальном времени?

Artem
30.09.2018
12:50:44
Мб pprof раз в секунду подойдёт?

Никита
30.09.2018
12:51:56
Та вот у trace такие графики красивые

Хочется такое же

Александр
30.09.2018
12:52:40
кмх

вопрос такой, если у меня есть условно пакет dao только с интерфейсами структурами, долже ли пакет с реализации под конкретную бд использовать его

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

Никита
30.09.2018
12:54:02
Пример приведешь?

Вроде как понял о чём ты, но хочется убедиться

Страница 1482 из 1630