"Компания без менеджеров". Без менеджеров — не бывает. Да и чем менеджеры так плохи, что это был повод? Когда нет менеджеров, значит это тупая перепродажа, с стиле 90-х. Но молодежь тех годов не застала, поэтому на лохотрон все еще попадается.
Не надо делать бесплатных сервисов для большого числа пользователей. Бесплатного ничего не бывает, кто-то в любом случае платит. Платит как минимум за мощности для обслуживания своего API.
Не надо думать, что если кто-то сделал публичное API, то он сделал это для кого-то постороннего, кто будет на этом зарабатывать, не делясь с владельцем API. Исключение составляет стратегия захвата рынка своим API.
я что-то пропустил в этой жизни… http идет поверх tcp, и в Go разница с простым бинарным сокетом с передачей структур только в том, что для http есть заголовки и парсер form values.
у программистов украсть/перепродать нечего (ну или очень мало, по сравнению с ископаемыми и воздухом), а завидовать их сытой творческой жизни всем остальным неприятно. и от кого вы в таких условиях что то ожидаете?
Maps, like channels, but unlike slices, are just pointers to runtime types. As you saw above, a map is just a pointer to a runtime.hmap structure.
Maps have the same pointer semantics as any other pointer value in a Go program. There is no magic save the rewriting of map syntax by the compiler into calls to functions in runtime/hmap.go.
при этом, значения в этой структуре не меняются при изменении содержания и его реаллокации в памяти. В Вашем примере вы переопределяете переменную в рамках области видимости, это не связано со свойствами мапы.
В первой лекции в конце ошибка, при передаче слайса и сложных типов, они НЕ передаются по ссылке, а передается копия структуры с указателем (копия дескриптора переменной). Если внутри фугкции произойдет изменение этого аргумента такое, что потребует реаллокации массива в памяти, то внутри функции создастся копия слайса с массивом, и снаружи функции дальнейшие изменения уже не будут видны. Поэтому и рекомендуют передавать указатели на сложные типы, а не сами переменные типа.
Не против, если я включу эту наработку в свое решение? https://github.com/covrom/gonec
"Компания без менеджеров". Без менеджеров — не бывает. Да и чем менеджеры так плохи, что это был повод? Когда нет менеджеров, значит это тупая перепродажа, с стиле 90-х. Но молодежь тех годов не застала, поэтому на лохотрон все еще попадается.
Уроки для школтников, которые не учились в школе:
Не надо делать бесплатных сервисов для большого числа пользователей. Бесплатного ничего не бывает, кто-то в любом случае платит. Платит как минимум за мощности для обслуживания своего API.
про роутеры есть интересное решение в книге "Go на практике"
а с сервера события как получать? push?
а, все, я понял, вы про websocket. а я думал просто про бинарный tcp
я что-то пропустил в этой жизни… http идет поверх tcp, и в Go разница с простым бинарным сокетом с передачей структур только в том, что для http есть заголовки и парсер form values.
хм, а разве http идет не поверх сокетов? там же тот же транспорт, нет?
у программистов украсть/перепродать нечего (ну или очень мало, по сравнению с ископаемыми и воздухом), а завидовать их сытой творческой жизни всем остальным неприятно. и от кого вы в таких условиях что то ожидаете?
все верно, цель заметки была в том, чтобы показать, что изменение мапы в функции не равно изменению слайса
Maps, like channels, but unlike slices, are just pointers to runtime types. As you saw above, a map is just a pointer to a runtime.hmap structure.
Maps have the same pointer semantics as any other pointer value in a Go program. There is no magic save the rewriting of map syntax by the compiler into calls to functions in runtime/hmap.go.
при этом, значения в этой структуре не меняются при изменении содержания и его реаллокации в памяти. В Вашем примере вы переопределяете переменную в рамках области видимости, это не связано со свойствами мапы.
В первой лекции в конце ошибка, при передаче слайса и сложных типов, они НЕ передаются по ссылке, а передается копия структуры с указателем (копия дескриптора переменной). Если внутри фугкции произойдет изменение этого аргумента такое, что потребует реаллокации массива в памяти, то внутри функции создастся копия слайса с массивом, и снаружи функции дальнейшие изменения уже не будут видны. Поэтому и рекомендуют передавать указатели на сложные типы, а не сами переменные типа.