Боюсь, вы плохо себе представляете какие проблемы решает context.Context
На мой взгляд, вы забыли про базовые принципы, про простоту, про то, что явное лучше не явного. Все вот эти вот ваши паттерны проектирования оставьте там, откуда вы пришли в Go, они тут не нужны, не нужно пытаться «натягивать сову на глобус», ничего хорошего из этого не выйдет
Один хороший человек(кажется его звали Дэйв) как-то сказал, что любой пакет, если его имя не cmd или internal, должен содержать код, в вашем пакете interfaces я не вижу кода. Так же, этот хороший человек писал, что имя пакета должно отображать назначение, а не содержимое. За отсутствие возможности конфигурировать порт для апишки и данные для соединения с базой хочется выдать отдельный жирный минус. Ну и конечно же, GORM — величайшее зло.
Если функция, принимающая слайс, должна модифицировать этот слайс, то лучше сделать это более явно, то есть данная функция должна возвращать этот самый слайс(ну или новый), как это сделано в функции append. А с такой неявной реализацией изменений вы лишь плодите работу для GC
Спасибо за статью, познавательно. Занимаюсь маркировкой обуви, как-то не задумывался раньше о криптохвостах, но прочитав статью решили провести эксперимент. Взяли реальный код, заменили ему хвост, сгенерили датаматрикс и скормили приложению ЧЗ, которое ответило, что код подлинный. Чудеса да и только. Если с обувью будут такие же «чудеса» как с сигаретами, то чувствую меня ждёт много приятных и запоминающихся моментов в работе.
Глава 6
В нашей программе это создает настоящие проблемы, потому что количество
значений данных в файле неизвестно заранее. На помощь приходят сегменты Go.
Сегменты — разновидность коллекций, которые могут расширяться для хранения
дополнительных элементов; а это как раз то, что нужно!
Путешественник А перевозит все деньги на другой берег. Далее перевозит путешественника Б, но на обратном пути забирает свою тысячу. Забирает путешественника C, оставив свою тысячу на изначальном берегу, после возвращается за ними.
API IntersectionObserver доступно во всех свежих браузерах за исключением Safari
Работает только в Chrome 51+, Edge 15+, FireFox 51-53
Опера, Сафари и ИЕ не поддерживают это чудо. Но конечно же, это не мешает использовать его во всех остальных.
А почему нельзя создать «демона» который будет обновлять данные в кеше каждые 5, 10, 30 секунд (в зависимости от времени суток или величина нагрузки или по какой-то иной логике), а пользвательские запросы всегда будут брать данные из кеша?
function addScript(arr, target){
for(var i in arr) {
var s = document.createElement("script");
s.type = "text/javascript";
s.src = arr[i];
target.appendChild(s);
}
}
addScript(["JS/example-1.js","JS/example-2.js","JS/example-3.js"], document.body);
На мой взгляд, вы забыли про базовые принципы, про простоту, про то, что явное лучше не явного. Все вот эти вот ваши паттерны проектирования оставьте там, откуда вы пришли в Go, они тут не нужны, не нужно пытаться «натягивать сову на глобус», ничего хорошего из этого не выйдет
А какую проблему решает ваш шаблон проектирования?
Сегменты? Серьёзно? Не слайсы?
20 минут назад пришло данное сообщение. Я даже не успел понять, что это было, но было немного тревожно
он не сбежит, так как количество чужого золота не превышает его собственное
Путешественник А перевозит все деньги на другой берег. Далее перевозит путешественника Б, но на обратном пути забирает свою тысячу. Забирает путешественника C, оставив свою тысячу на изначальном берегу, после возвращается за ними.
Работает только в Chrome 51+, Edge 15+, FireFox 51-53
Опера, Сафари и ИЕ не поддерживают это чудо. Но конечно же, это не мешает использовать его во всех остальных.
Или автор не в курсе их существования?
func main() {
t, _ := template.ParseFiles(«index.html»)
http.HandleFunc("/", func (w http.ResponseWriter, r *http.Request) {
p := Page{Var:«hello habr»}
t.Execute(w, p)
});
http.ListenAndServe(":8100", nil);
}