Size: a a a

2020 July 29

DP

Daniel Podolsky in Go-go!
Denis
Хороший вопрос
есть
источник

KR

Kai Ren in Go-go!
Михаил
Этим
Shape shape = new Rectangle
{
 Width = 100,
 Height = 100,
 Point = new Point { X = 0, Y = 100 }
};
var result = shape switch
{
 Rectangle (100, 100, null) => "Found 100x100 rectangle without a point",
 Rectangle (100, 100, _) => "Found 100x100 rectangle",
 _ => "Different, or null shape"
};
В Go if'ом разобрать будет читаеме, чем эта портянка.
источник

ОЭ

Орб Экксель... in Go-go!
Daniel Podolsky
это уже существующая программа и она уже запущена?

тогда все зависит от данных

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

По этому я ищу способ сказать программе что бы она заканчивала работу,  а вторая копия будет ждать какого-то сигнала для запуска.

Но поднимать веб-сервер или реалтайм конфиги не очень хочется,  т.к. их функционал будет использоваться очень редко.

Может можно как-то через консоль что-то программам сказать?
источник

ОЭ

Орб Экксель... in Go-go!
Вообще программа у нас запущена как windows служба, возможно там что-то есть
источник

A

Adv0cat in Go-go!
Как у вас все сложно, какая боль чувствуется 😄
источник

DP

Daniel Podolsky in Go-go!
Орб Экксель
Вообще программа у нас запущена как windows служба, возможно там что-то есть
там есть, если вы api сервисов поддерживаете, и делает это правильно
источник

DP

Daniel Podolsky in Go-go!
а если это просто программа, и она через что-то вроде NSSM запущена - тогда нет
источник

DP

Daniel Podolsky in Go-go!
но!

windows - posix система, как это не удивительно. и она поддерживает posix-сигналы

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

DP

Daniel Podolsky in Go-go!
обысно это sigterm
источник

АД

Алексей Долгов... in Go-go!
а в ide goland нет подсветки для этого? или ошибку receive from send-only type невозможно отловить
wch := make(chan<- int)
for s := range wch {
   _ = s
}

вот на это безобразие ide никак не реагирует
источник

J

Jorillo in Go-go!
Алексей Долгов
а в ide goland нет подсветки для этого? или ошибку receive from send-only type невозможно отловить
wch := make(chan<- int)
for s := range wch {
   _ = s
}

вот на это безобразие ide никак не реагирует
Мне казалось send-only или receive-only можно объявлять в контексте параметров функции, а не как новую переменную
источник

J

Jorillo in Go-go!
Алексей Долгов
а в ide goland нет подсветки для этого? или ошибку receive from send-only type невозможно отловить
wch := make(chan<- int)
for s := range wch {
   _ = s
}

вот на это безобразие ide никак не реагирует
Почитайте здесь: https://gobyexample.com/channel-directions
источник

ЛА

Локоть Анатолий... in Go-go!
Jorillo
Мне казалось send-only или receive-only можно объявлять в контексте параметров функции, а не как новую переменную
Выражения с каналами в этих контекстах синтаксически одинаковы, так что можно.
Другой вопрос что канал создаётся чтобы писать и читать всегда, поэтому данный код скорее чистое демо, не для использования.


А по сути - idea много чего не подсвечивает по сравнению с хорошо настроенным линтером
источник

RA

Ruslan Askme in Go-go!
Всем привет.
Объясните, пожалуйста, почему мапы не безопасны в многопоточной среде ? (или можно ссылки на статьи)
источник

A

Aleksandr in Go-go!
Локоть Анатолий
Выражения с каналами в этих контекстах синтаксически одинаковы, так что можно.
Другой вопрос что канал создаётся чтобы писать и читать всегда, поэтому данный код скорее чистое демо, не для использования.


А по сути - idea много чего не подсвечивает по сравнению с хорошо настроенным линтером
а где бы взять линтер и посравнивать? 🙂
источник

с

сонная википедия... in Go-go!
Ruslan Askme
Всем привет.
Объясните, пожалуйста, почему мапы не безопасны в многопоточной среде ? (или можно ссылки на статьи)
потому что они не синхронизированы
источник

ЛА

Локоть Анатолий... in Go-go!
Ruslan Askme
Всем привет.
Объясните, пожалуйста, почему мапы не безопасны в многопоточной среде ? (или можно ссылки на статьи)
Если создать 2 горутины и в них  в цикле в обоих писать в общую мапу, то получите панику.

Но на самом деле это с любыми типами нельзя делать, просто только для мап разрабы явно кидают паники
https://golangforall.com/ru/post/golang-data-handling-concurrent-programs.html
источник

с

сонная википедия... in Go-go!
сонная википедия
потому что они не синхронизированы
небезопасна только запись
источник

DP

Daniel Podolsky in Go-go!
Ruslan Askme
Всем привет.
Объясните, пожалуйста, почему мапы не безопасны в многопоточной среде ? (или можно ссылки на статьи)
потому, что на каждую запись может произойте перестроение мапы, и те, кто это не отследит, будут читать-писать по адресам, более не актуальным
источник

ЛА

Локоть Анатолий... in Go-go!
Aleksandr
а где бы взять линтер и посравнивать? 🙂
Отличный доклад по теме
https://youtu.be/VlnxsfSs1ms, который когда-то меня погрузил в тему линтеров в го.

Автор также обещал конфиг линтеоа выложить или ссылку дать, может она там где-то в описании есть или в самом докладе он словами говорил, плохо помню
источник