Hola Compañeros
Docker cuenta con una guía oficial de buenas prácticas para realizar Dockerfile, es extenso y esta en íngles pero es bastante bueno y saber que recomendaciones nos dan para la construcción de este tipo de archivos,
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
Hola profe @alexyslozada66750
Esta es mi propuesta para agregar un timetrack para verificar cuando tiempo tomo la ejecución, espero cumpla con el reto propuesto, un saludo profe, excelente curso
type HandlerSign func(w http.ResponseWriter, r *http.Request)
func Log(f HandlerSign) HandlerSign {
return func(w http.ResponseWriter, r *http.Request) {
defer TimeTrack(time.Now(), r.URL.Path)
log.Printf("request %q, method %q", r.URL.Path, r.Method)
f(w, r)
}
}
func TimeTrack(start time.Time, name string) {
elapsed := time.Since(start)
log.Printf("%q execution time: %s", name, elapsed)
}
0 seguidores
0 seguidos
Hola Buen día,
GORM para la fecha indicada ya genera automaticamente los foreign key, por lo que no es necesario ir crear las restricciones manualmente, a continuación les comparto un screenshot para que lo puedan apreciear.
Ese resultado automático es el gran trabajo de la comunidad de Go en hacer de este lenguaje de programación cada vez más poderoso y más dinámico
Hola Buen día.
Es importante mencionar que la documentación presentada en el vídeo ha cambiado, por lo tanto la forma en que explica el profesor varía un poco para que funcione, les comparto la Url de la documentación y la implementación que realicé para que funcionara adecuadamente y poder continuar con el curso.
Documentación GORM, conectarse a una base de datos: https://gorm.io/docs/connecting_to_the_database.html
Código implementado a la nueva documentación:
package storage
import (
"fmt"
"log"
"sync"
"gorm.io/driver/mysql"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
var (
db *gorm.DB
once sync.Once
)
//Driver of storage
type Driver string
const (
Mysql Driver = "MYSQL"
Postgres Driver = "POSTGRES"
)
//New create a connection with DB
func New(d Driver) {
switch d {
case Mysql:
newMySQLDB()
case Postgres:
newPostgresDB()
}
}
// newPostgresDB singleton
func newPostgresDB() {
once.Do(func(){
var err error
db, err = gorm.Open(postgres.Open("postgres://postgres:postgres@localhost:5432/godb?sslmode=disable"),&gorm.Config{})
if err != nil {
log.Fatalf("Connection with DB is not available: %v", err)
}
fmt.Println("Connected to Postgres!")
})
}
// newMySQLDB singleton
func newMySQLDB() {
once.Do(func(){
var err error
db, err = gorm.Open(mysql.Open("root:root@tcp(localhost:3306)/godb?parseTime=true"), &gorm.Config{})
if err != nil {
log.Fatalf("Connection with DB is not available: %v", err)
}
fmt.Println("Connected to MySQL!")
})
}
// Pool return a unique instance of DB
func DB() *gorm.DB {
return db
}
¡Vaya! no conocia esta forma de implementación de factory con DAO, me ha gustado muchisimo, me preguntaba hasta ahora ¿porque hacemos todo lo que hacemos? al final todo tiene una respuesta, me gustó mucho como me trajo hasta acá profesor Alejandro, felicidades
Hola Profe, he seguido el video al pié de la letra y he logrado traer los registros según como nos muestas, lo único que no logré realizar formalmente fue impimir bajo el formato que tu definiste, yo lo puse de la siguiente manera:
func (m *Model) String() string {
return fmt.Sprintf("%02d | %-20s | %-20s | %5d | %10s | %10s\n",
m.ID, m.Name, m.Observations, m.Price, m.CreatedAt.Format("2006-01-02"),
m.UpdatedAt.Format("2006-01-02"))
}
pero imprime algo así
Connected to Postgres!
[01 | Curso de Go | | 50 | 2020-11-13 | 0001-01-01
02 | Curso de POO con Go | | 50 | 2020-11-13 | 0001-01-01
03 | Curso de POO con Go | on fine | 70 | 2020-11-13 | 0001-01-01
]
Agradezco mucho tu colaboración, el curso esta genial y cada vez me gusta más, muchas gracias profe
Profesor, sino estoy mal la version de vue 3.0 ahora maneja TypeScript
Me suscribií a ed.team por estos cursos de go... vamos a ver :D