Anonymous
это последнее чем я буду заниматься
Oleg
это последнее чем я буду заниматься
Может и верно Но насчет фу я не согласен ) пайтон первый в рейтинге Мне конечно вроде не подходит для ентерпрайз проектов
Mega
Why is it hard to find answers to programming questions?
Alexander
Mostly it is easy
Oleg
Why is it hard to find answers to programming questions?
Сейчас уже нетрудно Много инфы А вот раньше не было
Alexander
для этого придумали write ahead log
Maks
а еще базы данных)
Alexander
пишешь данные линейно в файл, потом проигрываешь при падении
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
Emil
Я бы попробовал что-то вроде update set taken =1 where ... And taken = 0 и чекал сколько rows affected
Хм... Красивый вариант, вставлю в фор И от селекта избавит Спасибо Таблицы же так не надо лочить? Или это с целью предотвратить перехват брони все ещё надо?
Alexander
Таблицы не надо лочить, а последний вариант неплох как по мне, если ты хочешь вариант кто первый того и тапки форсировать
Alexander
Просто получается можно взаимных фейлов добиться если есть 2 запроса с пересекающимися зонами и они не отсортированы
Emil
Вот тоже боялся подобного Тогда, форсировать первого и селект фор апдейт, если я правильно понял, лучший вариант Спасибо✨✨
V
if err := s.Serve(lis); err != nil { log.Fatalf("Failed to Serve: %v", err) }
Похоже err := s.Serve(lis) if err != nil { log.Fatal(...) } но с разницей, что в твоём случае областью видимости err будут скобки if
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
но почему это так работает