Anonymous
Anonymous
это последнее чем я буду заниматься
Mega
Why is it hard to find answers to programming questions?
Alexander
Mostly it is easy
Oleg
Alexander
для этого придумали write ahead log
Maks
а еще базы данных)
Alexander
пишешь данные линейно в файл, потом проигрываешь при падении
Alexander
линейная запись быстрая достаточно
Alexander
вручную
/slvscm
rufus
Maks
sqlite
Alexander
rufus
у меня clear linux через rufus не хотел делаться, через рекомендованную balena etcher все сработало
Maks
Как и на любом другом языке)
Alexander
трояны размером в добрые несколько мегабайт - хорошая идея
Alexander
статическая линковка
Alexander
+ по умолчанию дебаг символы
Anonymous
что значит в grpc: клиенты могут быть асинхронно или синхронно заблокированы?
Anonymous
резко прекратиться процесс работы с кодом или что?
Alexander
наверное речь идет об особенности протокола http/2
Alexander
типа через одно соединение получать несколько ресурсов
Alexander
и можно асинхронно это все реализовывать
Anonymous
не до конца понял, но спасибо
Alexander
так это ж естественно
Alexander
у тебя есть переменная i в контексте цикла, ты делаешь замыкание, она остается как бы для этих функций
Alexander
https://play.golang.org/p/Fdavr29S73c
Alexander
даже перемудрил немного: https://play.golang.org/p/p4UqQIynZRb
Alexander
в твоем примере?
Alexander
так это не передача по значению, это именно работа с переменной
Alexander
браузер заблочил
Alexander
точно безопасно?)
Alexander
хз, это жс
Aleksey
Видимо, js создаёт по новому значению на каждой итерации вместо переиспользования, как в go
🅞leksiy
Ппф, легко, поменяй let на var и получишь результат как в go)
🅞leksiy
🅞leksiy
Herman
так оно с let, получается, хранит в памяти все числа эти?
🅞leksiy
let имеет блочную область видимости, кроме того, его использование позволяет избежать случайного замыкания, если вызывать функцию в цикле и передавать счетчик в качестве параметра.
🅞leksiy
А тут, просто добавь i:=i
🅞leksiy
https://play.golang.org/p/PAPN-ZosFKg
🅞leksiy
Ты затеняешь переменную таким образом. Создаешь с таким же именем внутри блока и копируешь в нее значение
🅞leksiy
Кстати неплохой способ выстрелить себе в ногу, если где-то в цикле написать вместо myVar = 1, так myVar := 1
🅞leksiy
Вместо присвоения значения, ты создаешь новую
🅞leksiy
Потому-что это и есть один i
https://play.golang.org/p/Z7_B4tELRd8
🅞leksiy
Переменная счетчик, она просто увеличивается
🅞leksiy
Занимает один int в памяти
🅞leksiy
В конце цикла все твои ф-ии содержат замыкание на эту одну переменную, а значение равно тому, которое последнее в цикле она получила
Anonymous
if err := s.Serve(lis); err != nil {
log.Fatalf("Failed to Serve: %v", err)
}
Anonymous
что эта конструкция значит?
Anonymous
как ошибка принимает два значения одновременно?
Emil
В теле(это не тело правда по логике...) ифа инициализация сначала, а потом проверка на нил, если речь об этом
Anonymous
то есть
Emil
Краткая запись или типа того называется
Anonymous
я присвоил ошибке значение, а потом проверяю ее?
Emil
Ага, сразу
Anonymous
понял, спасибо
Emil
Тоже задам вопрос на ночь глядя
Вот у меня есть функция бронирования, можно ли сказать, что я избавился от гонок? Я инициализирую транзакцию, в форе проверка занятости, если свободна, то займу, а если зона занята, то выход из функции и соответственно откат базы. Будет работать?
Alexander
А в постгре работают селекты внутри транзакций? В мускуле не работало
Alexander
Я бы попробовал что-то вроде update set taken =1 where ... And taken = 0 и чекал сколько rows affected
Alexander
Alexander
По логике это ж надо всё таблицы во время транзакции залочить, чтобы ты всё селекты получал как на начало транзакции, что как бы полный п
Alexander
Можешь таблицу залочить, но мне это не нравится)
Alexander
https://stackoverflow.com/questions/24532867/should-i-include-selects-in-a-transaction?noredirect=1&lq=1
Alexander
Таблицы не надо лочить, а последний вариант неплох как по мне, если ты хочешь вариант кто первый того и тапки форсировать
Alexander
Просто получается можно взаимных фейлов добиться если есть 2 запроса с пересекающимися зонами и они не отсортированы
Emil
Вот тоже боялся подобного
Тогда, форсировать первого и селект фор апдейт, если я правильно понял, лучший вариант
Спасибо✨✨
Anonymous
да, мне уже объяснили, но еще раз спасибо
V
дополнил про скоуп
Anonymous
а что за область видимости?
Anonymous
там же ее как таковой нету?
V
Пример 1
a := true
if a {
fmt.Println("true", a)
} else {
fmt.Println("false", a)
}
fmt.Println("finally", a) // напечатает
Пример 2
if a := true; a {
fmt.Println("true", a) // тут а определена
} else {
fmt.Println("false", a) // тут а тоже определена
}
fmt.Println("finally", a) // тут а не определена, выдаст ошибку
Anonymous
странно
Anonymous
почему она не глобальная?
V
ну, она в обоих случаях локальная. считай что оба примера внутри func
глобальной будет та переменная которая объявлена вне main
a := true
func main () { ... }
Anonymous
я это знаю
Anonymous
но почему это так работает