
Aleksander
25.10.2017
09:42:00
type Peoples struct {
one map[string]string
two map[string]string
mutexOne sync.RWMutex
mutexTwo sync.RWMutex
}

Alexei
25.10.2017
09:42:49
@Civiloid делай рукалицо )))

Vladimir
25.10.2017
09:42:52
People - уже множественное
@rsaoskol сделай:
type SyncedMap struct {
sync.RWMutex
data map[string]string
}
type People struct {
one SyncedMap
two SyncedMap
}

Google

Vladimir
25.10.2017
09:43:56
тогда у тебя будет семантика:
People.one.Lock()
People.one.data["foo"] = "bar"
People.one.Unlock()
и это более логично и ожидаемо
или посмотри на sync.Map сразу

Alexei
25.10.2017
09:46:48
я встречал в коде, когда просто, без структуры идут
var (
somevalue sometype
mutex sync.Mutex
)
интересно, а что лочится в данном случае?
забыл добавить, что видел такое в пакете main

Andrew
25.10.2017
09:48:09

Vladimir
25.10.2017
09:50:23
ага

Andrew
25.10.2017
09:51:09

Alexei
25.10.2017
09:52:00
хм, странно, вроде там ничего колом не вставало, просто академический интерес, спасибо )))

Andrew
25.10.2017
09:52:23

Alexei
25.10.2017
09:52:35
???

Vladimir
25.10.2017
09:53:16
вызываешь Lock - смотрим взял ли уже кто-то лок, если не взял - меняем состояние, отдаем управление

Google

Vladimir
25.10.2017
09:53:43
если взял - ждем пока не отпустят
там могут быть тайматуы на ожидания, но суть та же
от платформы зависят детали имплементации
поэтому сделав:
mutex1.Lock()
mutex1.Lock()
ты повесишь приложение
потому что вот
лок уже взяли, его никто не отпускал
точнее тредик повесишь

Alexei
25.10.2017
09:54:56
да я понимаю и в моем представлении также, просто действительных вставаний не было, шуршит в продакшине 24/7, поэтому было немного удивительно

Vladimir
25.10.2017
09:55:12
ну значит быстро отпускают локи что ты не замечаешь
попрофилируй мьютексы и увидишь

Alexei
25.10.2017
09:55:28
может быть

Vladimir
25.10.2017
09:55:30
https://rakyll.org/mutexprofile/

Alexei
25.10.2017
09:55:43
да я уже уволился оттуда, нет доступа к коду и условий его выполнения )))

Vladimir
25.10.2017
09:55:51
нууу
там могут и баги быть
и кто-нибудь где-нибудь мьютексы игнорирует просто напросто
увы частая проблема когда лок берется в одном месте, пишется в другом. Или пишется при взятом RLock'е

Alexei
25.10.2017
09:56:46
это да, согласен

Andrew
25.10.2017
09:56:58

Oleg
25.10.2017
13:03:36
Имеет ли смысл использовать REST подход в обычном приложении используя js ?

Google

Aleksandr
25.10.2017
13:04:33

Oleg
25.10.2017
13:06:45
ну, я имел в виду хеловорлд подобные, небольшие приложения. Вопрос заключается именно в использовании PUT DELETE и тп.

Aleksandr
25.10.2017
13:08:32
разверни. не понимаю, почему тебя должны PUT/DELETE беспокоить, тем более на hello world

Alexander
25.10.2017
13:08:48
Если его никто другйо не будет разрабатывать и ты не планируешь его расширять, то делай как душе угодно

Oleg
25.10.2017
13:13:01
Я просто смещаюсь в сторону вебдева, а именно в сторону vuejs(js) и столкнулся с тем, что в HTTP формах используется только GET и POST , что несколько меня обескуражило ибо сама философия REST мне очень понравилась ибо для каждого метода своё действие, а городить /post/delete/{ID} и /post/add/{ID} ну как-то не очень ... (

Aleksandr
25.10.2017
13:13:59
подписываешься на onSubmit, асинхронно дергаешь метод апи любым http методом
ограничений нет

Roman
25.10.2017
13:17:28
REST конечно хорош, но в больших проектах могут возникнуть сложности. Особенно с кастомными экшенами вроде поиска, фильтров, форм с мультисущьностями. Которые не очень то укладываются в концепцию. Если вам только CRUDL нужен, тогда юзайте REST. Мы изначально выбрали его, но потом он мутировал что-то иное что сложно назвать RESTом

Oleg
25.10.2017
13:22:12
ну, меня больше сейчас интересует современный подход к построению веб приложений, если где-то есть книга ,я с радостью почитаю. На англйском - не проблема.

Aleksandr
25.10.2017
13:24:52
в контексте го

Oleg
25.10.2017
13:33:47
почти всё я там читал уже, ну ок, гугл не отменяли ещё, пороюсь там, спасибо. Просто если брать конкретно книги про GO , то сторона клиента в основном рассматривается весьма поверхностно, за исключением пожалуй одной книги LvlUpYouWebAppWIthGo, там неплохая база, но хотелось-бы большего.

double
25.10.2017
17:39:47
shtein.ddns.net:8080

Aleksandr
25.10.2017
17:48:09

double
25.10.2017
17:48:18

Slava
25.10.2017
18:16:50
за такое можно и бан схлопотать

Mush
25.10.2017
19:55:25
баньте к херам! тем более что сайт перестал работать

Maxim
25.10.2017
19:59:02
Ты наверняка себе DDos организовал, скинув сюда ссылку. Все начали заходить на сайт, делиться ссылкой с друзьями... Так сайт и лег

Google

Dmitry
25.10.2017
20:02:27
Хабраэффект

Alexander
25.10.2017
20:05:39
тут 1000 селовек всего, даже если представить что все попрели, то сайт со статьями без всяких пперсонализированных выборок вряд-ли ляжет
с условием что кеширование какое-нибудь имеется
но без кеша по-моему сейчас никто не делает

Алексей
25.10.2017
20:17:57
Без кэша вряд ли бы тоже лег)

Alexander
25.10.2017
20:22:45
Странное утверждение насчёт кеша

Alexander
25.10.2017
20:22:57

Alexander
25.10.2017
20:23:02
Без него вполне можно

Alexander
25.10.2017
20:23:22
а смысл ?
се

Alexander
25.10.2017
20:23:33
Базы неплохо кешируют если мощности позволяют
Зачем городить лишний слой?

Alexander
25.10.2017
20:23:52

Alexander
25.10.2017
20:24:30
Любые нормальные базы имеют продвинутые кеши в памяти под капотом

Alexander
25.10.2017
20:24:51
))
то есть коннекты к базе ничего не стоят теперь ?

Alexander
25.10.2017
20:25:55
До определённых масштабов об этом можно не беспокоится

Mike
25.10.2017
20:25:57
А ЧТО ТЫ ЗА КАЖДЫЙ КОННЕКТ ПЛАТИШЬ?! ТЕБЯ ОБМАНУЛИ ЕСТЬ БЕСПЛАТНЫЕ БАЗЫ

Alexander
25.10.2017
20:26:02
nginx cache, varnish, memcached...redis и пр. это лишний слой ?

Mike
25.10.2017
20:26:20

Google

Alexander
25.10.2017
20:26:29
Да, если работает без них

Alexander
25.10.2017
20:26:46

Mike
25.10.2017
20:27:19
ты всю шутку испортил серьезно на нее ответив(

Alexander
25.10.2017
20:27:47

Alexander
25.10.2017
20:30:14
в общем мое личное мнение, на проекты такого рода (сборник статей) можно повесить nginx cache over memcached с соединением по сокету, самый быстрый способ сделать сайт более-менее непробиваемым

Valentin
25.10.2017
20:31:54
Если сайт это бложек с 200 униками в сутки можно вообще не заморачиваться

Kirill
25.10.2017
20:48:35
Учитывая что PostgreSQL/MySQL вполне себе на "среднем" железе выдают десятки тысяч запросов в секунду, прикручивание "с боку" всех этих кэшей зачастую избыточно и несет с собой кучу проблем. Тоже касаемо Редиса, часто реляционки гораздо более шустрые, если есть развесистая логика и ее можно положить в СУБД, чем несколько раз сбегать в Редис и пытаться что-то сделать на стороне приложения

Alexander
25.10.2017
20:52:29

Kirill
25.10.2017
20:52:54
Тогда лучше просто статический ХТМЛ нагенерить

Alexander
25.10.2017
20:53:11
все-равно из memcached будет быстрее

Kirill
25.10.2017
20:53:25
быстрее чего ?

Alexander
25.10.2017
20:53:35
статических файлов
я же пишу про связку с nginx
nginx может и в статику кешировать
но c memcached это быстрее
суть в том что в memcached будет лежать тот же html но только не на диске а в оперативке